/**
 * @class Segment
 * @author skamic
 * @since 2012.02.14
 */
var Segment = function() {
	this.initOption = [];
};
/**
 * 
 * @method setProperties
 * @param homeId 	Home ID
 * @param sgmtId 	Segment ID
 * @param option 	Segment Option
 */
Segment.prototype.setProperties = function(homeId, sgmtId, option) {
	this.mainSelector = "#" + homeId + " #" + homeId + sgmtId;
	this.setHomeId(homeId);
	this.setSegmentId(sgmtId);
	this.setOption(option);
};
/**
 * 
 * @method setHomeId
 * @param homeId 	Home ID
 */
Segment.prototype.setHomeId = function(homeId) {
	this.homeId = homeId;
};
/**
 * 
 * @method setSegmentId
 * @param sgmtId 	Segment ID
 */
Segment.prototype.setSegmentId = function(sgmtId) {
	this.sgmtId = sgmtId;
};
/**
 * 
 * @method setOption
 * @param option 	Segment Option
 */
Segment.prototype.setOption = function(option) {
	if ((option == null) || (option == undefined) || (option == "null") || (option == "undefined")) {
		this.option = this.initOption;
	} else {
		this.option = option;
	}
};
/**
 * 
 * @method  setSegmentType
 * @param type 	Segment Type
 */
Segment.prototype.setSegmentType = function(type) {
	this.type = type;
};
/**
 * 
 * @method getHomeId
 * @returns {String} homeId
 */
Segment.prototype.getHomeId = function() {
	return this.homeId;
};
/**
 * 
 * @returns
 */
Segment.prototype.getSegmentId = function() {
	return this.sgmtId;
};
/**
 * 
 * @returns
 */
Segment.prototype.getOption = function() {
	return this.option;
};
/**
 * 
 * @returns
 */
Segment.prototype.getSegmentType = function() {
	return this.type;
};
/**
 * 
 * @returns
 */
Segment.prototype.getInitOption = function() {
	return this.initOption;
};
/**
 * 
 * @returns
 */
Segment.prototype.getPrevOption = function() {
	return this.prevOption;
};
/**
 * 
 */
Segment.prototype.saveCurrentOption = function() {
	this.prevOption = JSON.stringify(this.option);
};
/**
 * 
 * @param id
 * @returns {Boolean}
 */
Segment.prototype.hasOption = function(id) {
	for (var i=0, count=this.option.length ; i<count ; ++i) {
		if (this.option[i] == id) {
			return true;
		}
	}
	
	return false;
};
Segment.prototype.checkEditMode = function() {
	var homeEventHandler = this.request.getEventHandler();
	
	if (homeEventHandler.getCurrentMode().indexOf("edit") != -1) {
		this.startEditMode();
	}
};


/** TOPSTORY SEGMENT */
var TopstorySegment = function(request) {
	this.request = request;
	this.initOption = ["topstory_02", "topstory_03"];
	this.option = [];
	this.currentLocation = {};
	this.setSegmentType("topstory");
	this.initTopstoryInfo();
};
TopstorySegment.prototype = new Segment();
TopstorySegment.prototype.initTopstoryInfo = function() {
	this.topstoryInfo = {};
//	this.topstoryInfo["topstory_01"] = { type : "map",		name : "map & location" };
	this.topstoryInfo["topstory_02"] = { type : "news",		name : "local news" };
	this.topstoryInfo["topstory_03"] = { type : "weather",	name : "local weather" };
//	this.topstoryInfo["topstory_04"] = { type : "snsfeeds",	name : "snsfeeds" };
//	this.topstoryInfo["topstory_05"] = { type : "ad",		name : "ads & coupons" };
	this.topstoryInfo["topstory_06"] = { type : "webclip",	name : "webclip" };
};
TopstorySegment.prototype.load = function(homeId, sgmtId, option, loadType) {
	this.setProperties(homeId, sgmtId, option);
	// exception handling
	if (this.option.toString() == "[object Object]") {
		this.setOption(null);
		this.request.getSegmentManager().setSegmentOption(homeId, sgmtId, this.option, true);
	}
	
	this.setCurrentLocation({ coords : { latitude : 37.257305, longitude : 127.054707 } });
	this.configTopstorySegment(loadType);
	this.setMovingAreaWidth();
	this.setIScroll();
};
TopstorySegment.prototype.setCurrentLocation = function(position) {
	this.currentLocation.lat = position.coords.latitude;
	this.currentLocation.lon = position.coords.longitude;
};
TopstorySegment.prototype.getCurrentlocation = function() {
	return this.currentLocation;
};
TopstorySegment.prototype.configTopstorySegment = function(loadType) {			
	var usedItem = this.getUsedItem(),
		count = usedItem.length;
	
	if (jQuery(this.mainSelector + " .icon-delete").size() > 0) {
		jQuery(this.mainSelector + " .icon-delete").remove();		// remove icon-deletes
	}
	
	if (count > 0) {
		var currentItemCount = jQuery(this.mainSelector + " .topstory .item").size();
		if (currentItemCount > count) {
			jQuery(this.mainSelector + " .topstory .item:gt(" + (count - 1) + ")").remove();
		} else if (count > currentItemCount) {
			for (var i=0, appendCount=count-currentItemCount ; i<appendCount ; ++i) {
				jQuery(this.mainSelector + " .topstory > div:first > div").append(this.getItem());
			}
		}
		for (var i=0 ; i<count ; ++i) {
			var topstoryInfo = this.topstoryInfo[usedItem[i]],
				innerHTML = null;
			
			jQuery(this.mainSelector + " .topstory .item:eq(" + i + ")").get(0).className = "item";
			
			switch(topstoryInfo.type) {
			case "map":
				jQuery(this.mainSelector + " .topstory .item:eq(" + i + ")").addClass("topstory_map");
				// fill map container
				innerHTML = "<div class=\"map_canvas\"></div>" +
							"<h3></h3>";
				jQuery(this.mainSelector + " .topstory .item:eq(" + i + ") .screen").html(innerHTML);
				
				// load map
				this.loadMap();
				break;
			case "news":
				jQuery(this.mainSelector + " .topstory .item:eq(" + i + ")").addClass("topstory_news");
				innerHTML = "<figure>" +
								"<img>" +
							"</figure>" +
							"<div class=\"cont-text\">" +
								"<h3></h3>" +	
								"<p class=\"article\"></p>" +
								"<p class=\"date\"></p>" +
							"</div>" +
							"<div class=\"item_cover\"></div>";
				jQuery(this.mainSelector + " .topstory .item:eq(" + i + ") .screen").html(innerHTML);
				
				// load news
				this.loadNews(loadType);
				break;
			case "weather":
				jQuery(this.mainSelector + " .topstory .item:eq(" + i + ")").addClass("topstory_weather");
				innerHTML = "<figure>" +
								"<img>" +
							"</figure>" +
							"<div class=\"cont-text\">" +
								"<p class=\"weather_condition\"></p>" +
								"<h3></h3>" +
								"<p class=\"weather_temp\"></p>" +
							"</div>" +
							"<div class=\"item_cover\"></div>";
				jQuery(this.mainSelector + " .topstory .item:eq(" + i + ") .screen").html(innerHTML);
				
				// load current location's weather
				this.loadWeather(loadType);
				break;
			case "snsfeeds":
				// Check SNS token existed
				break;
			case "ad":
				break;
			case "webclip":
				jQuery(this.mainSelector + " .topstory .item:eq(" + i + ")").addClass("topstory_webclip");
				innerHTML = "<iframe class=\"webclip_ifrm\" width=\"100%\" frameborder=\"0\" scrolling=\"no\" seamless=\"seamless\" src=\"\"></iframe>" +
							"<div class=\"item_cover\"></div>";
				jQuery(this.mainSelector + " .topstory .item:eq(" + i + ") .screen").html(innerHTML);
				
				// load context webclip
				this.loadWebclip(loadType);
				break;
			default:
				break;
			}
		}
		this.request.getEventHandler().refreshScreenWidth(this.mainSelector);
	}
};
TopstorySegment.prototype.getItem = function() {
	var innerHTML = "<li class=\"item\">" +
						"<div class=\"screen\"></div>" +
					"</li>";
	
	return innerHTML;
};
TopstorySegment.prototype.getUsedItem = function() {
	var list = [];
	for (var i=0, count=this.option.length ; i<count ; ++i) {
		var id = this.option[i],
			topstoryInfo = this.topstoryInfo[id];
		// offline일 때, map이나 webclip이 포함되어 있다면 display하지 않음 (new google. 부분에서 에러 발생)
		if (navigator.onLine || true || (topstoryInfo && (topstoryInfo.type != "map") && (topstoryInfo.type != "webclip"))) {		// FIX_NAVI
			list.push(id);
		}
	}
	
	// 예외 처리 : topstory에서 사용되는 컨텐츠가 하나도 없는 경우, 뉴스와 날씨 기본으로 지정
	if (list.length == 0) {
		list.push(this.initOption);
	}
	
	return list;
};
TopstorySegment.prototype.loadMap = function() {
	this.initMap();
};
TopstorySegment.prototype.initMap = function() {
	var segmentObj = this;
	if (navigator.geolocation) {
		navigator.geolocation.getCurrentPosition(function(position) {
			segmentObj.displayMap(position);
		});
	} else {
		console.warn("Geolocation services are not available in this browser.");
		
		var position = {
			coords : {
				latitude : 37.257305,
				longitude : 127.054707
			}
		};
		this.displayMap(position);
	}
};
TopstorySegment.prototype.displayMap = function(position) {
	this.setCurrentLocation(position);
	var latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
	var myOptions = {
		zoom : 16,
		center : latlng,
		mapTypeId : google.maps.MapTypeId.ROADMAP
	};
	var map = new google.maps.Map(jQuery(this.mainSelector + " .map_canvas").get(0), myOptions);
	
	var marker = new google.maps.Marker({
		position : latlng,		// 마커를 위치시킬 지점
		map : map,		// 마커를 위치시킬 지도
		title : "Current Location",		// 마커에 마우스를 올렸을 때 나오는 글
		animation : google.maps.Animation.DROP		// 마커가 위에서 떨어짐 ^^
		//icon : image		// 마커의 모양을 임의로 지정할 수 있다.
	});
	
	// display current location name
	jQuery(this.mainSelector + " h3").html("My Location");
	
	// mark check-in point
	if (this.request.getAccountManager().tokenExist("foursquare")) {
		this.showNearbyCheckinPoints(map);
	}
};
TopstorySegment.prototype.showNearbyCheckinPoints = function(map) {
	var segmentObj = this;
	
	var latlon = this.currentLocation.lat + "," + this.currentLocation.lon;
	var foursquareManager = this.request.getSnsManager().foursquareManager;
	if (foursquareManager) {
		foursquareManager.getRecentCheckins(function(result) {
			segmentObj.showNearbyCheckinPointsCallback(result, map);
		}, { ll : latlon });
	}
};
TopstorySegment.prototype.showNearbyCheckinPointsCallback = function(result, map) {
	if (nvl(result) != "") {
		var resultObj = JSON.parse(result);
		if (resultObj.meta.code == 200) {
			var recentCheckins = resultObj.response.recent;
			if (recentCheckins.length > 0) {
				for (var i=0, count=recentCheckins.length ; i<count ; ++i) {
					var checkin = recentCheckins[i];
					if ((checkin.type == "checkin") && (checkin.distance <= 1000)) {
						var venue = checkin.venue;
						var user = checkin.user;
						var url = "https://foursquare.com/user/" + user.id + "/checkin/" + checkin.id;
						this.addMarker(map, venue.location.lat, venue.location.lng, venue.name, user.photo, url);
					}
				}
			}
		}
	}
};
TopstorySegment.prototype.addMarker = function(map, lat, lng, title, userImage, url) {
	var image = new google.maps.MarkerImage("/aphone/images/chs/home_map_point_small.png",
		// This marker is 20 pixels wide by 32 pixels tall.
		new google.maps.Size(44, 44),
		// The origin for this image is 0,0.
		new google.maps.Point(0, 0),
		new google.maps.Point(22, 44));
	var shadow = new google.maps.MarkerImage(userImage,
		// The shadow image is larger in the horizontal dimension
		new google.maps.Size(44, 44),
		// while the position and offset are the same as for the main image.
		new google.maps.Point(0, 0),
		new google.maps.Point(-22, 44),
		new google.maps.Size(44, 44));
	
	var latlng = new google.maps.LatLng(lat, lng);
	var marker = new google.maps.Marker({
		position : latlng,		// 마커를 위치시킬 지점
		map : map,		// 마커를 위치시킬 지도
		title : title,		// 마커에 마우스를 올렸을 때 나오는 글
		animation : google.maps.Animation.DROP,		// 마커가 위에서 떨어짐 ^^
		icon : image,		// 마커의 모양을 임의로 지정할 수 있다.
		shadow : shadow,
		clickable : true
	});
	google.maps.event.addListener(marker, "click", function(event) {
		window.open(url, "", "");
	});
};
TopstorySegment.prototype.updateOption = function(checkboxInfo) {
	if (checkboxInfo) {
		var newOption = [];
		
		for (var i=0, count=checkboxInfo.length ; i<count ; ++i) {
			var checkbox = checkboxInfo[i];
			
			if (checkbox.useYn) {
				newOption.push(checkbox.id);
			}
		}
		this.setOption(newOption);
	}
};
TopstorySegment.prototype.loadWeather = function(loadType) {
	var segmentManager = this.request.getSegmentManager(),
		weatherSegment = segmentManager.getNewSegmentObject(segmentManager.getSegmentId("weather"));
	// request current location's weather information
	if (navigator.onLine || true && (loadType != "cache")) {		// FIX_NAVI
		weatherSegment.getTopstoryWeather(this, this.currentLocation, function(segmentObj, weatherInfo) {
			segmentObj.displayWeather(weatherInfo);
			segmentObj.request.getEventHandler().setLocalStorage("topstoryWeatherInfo", JSON.stringify(weatherInfo));		// set local storage
		});
	} else {
		var lsTopstoryWeatherInfo = this.request.getEventHandler().getLocalStorage("topstoryWeatherInfo");
		if (nvl(lsTopstoryWeatherInfo) != "") {
			var weatherInfo = JSON.parse(lsTopstoryWeatherInfo);
			this.displayWeather(weatherInfo);
		}
	}
};
TopstorySegment.prototype.displayWeather = function(weatherInfo) {
	var weatherIndex = this.getOptionPosition("weather");
	
	jQuery(this.mainSelector + " .topstory .item:eq(" + weatherIndex + ") figure > img").attr("src", "/aphone/images/chs/weather/home_weather_" + weatherInfo.weather + ".png");		// background image
	jQuery(this.mainSelector + " .topstory .item:eq(" + weatherIndex + ") .weather_condition").html(weatherInfo.weatherText);		// weather condition
	jQuery(this.mainSelector + " .topstory .item:eq(" + weatherIndex + ") h3").html(weatherInfo.city);		// city
	jQuery(this.mainSelector + " .topstory .item:eq(" + weatherIndex + ") .weather_temp").html(weatherInfo.temperature + "<img src=\"/aphone/images/chs/home_weather_temp_c.png\">");		// temperature
};
TopstorySegment.prototype.loadNews = function(loadType) {
	var segmentManager = this.request.getSegmentManager(),
		newsSegment = segmentManager.getNewSegmentObject(segmentManager.getSegmentId("news"));
	// Request current location's news
	if (navigator.onLine || true && (loadType != "cache")) {		// FIX_NAVI
		newsSegment.getTopstoryNews(this, this.currentLocation, function(segmentObj, newsInfo) {
			segmentObj.displayNews(newsInfo);
			segmentObj.request.getEventHandler().setLocalStorage("topstoryNewsInfo", JSON.stringify(newsInfo));
		});
	} else {
		var lsTopstoryNewsInfo = this.request.getEventHandler().getLocalStorage("topstoryNewsInfo");
		if (nvl(lsTopstoryNewsInfo) != "") {
			var newsInfo = JSON.parse(lsTopstoryNewsInfo);
			this.displayNews(newsInfo);
		}
	}
};
TopstorySegment.prototype.displayNews = function(newsInfo) {
	var newsIndex = this.getOptionPosition("news");
	
	jQuery(this.mainSelector + " .topstory .item:eq(" + newsIndex + ") h3").html(newsInfo[0].title);		// news title
	jQuery(this.mainSelector + " .topstory .item:eq(" + newsIndex + ") .article").html(newsInfo[0].summary);		// news summary
	jQuery(this.mainSelector + " .topstory .item:eq(" + newsIndex + ") .date").html("<img class=\"logo\" src=\"/aphone/images/chs/home_icon_cnn.png\">" + newsInfo[0].date.toString().split("+")[0]);		// news date
	jQuery(this.mainSelector + " .topstory .item:eq(" + newsIndex + ") figure > img").getCachedImage(newsInfo[0].image, "topstory_news_image").load(function(event) {
		jQuery(this).fadeIn("fast", function() {
			var parentWidth = jQuery(this).parent().outerWidth(true),
				width = jQuery(this).outerWidth(true),
				leftValue = parseInt((width-parentWidth)/2, 10);
			
			if (leftValue < 0) {
				leftValue = 0;
			}
			jQuery(this).css("left", - leftValue);
		});
	});
};
TopstorySegment.prototype.loadWebclip = function(loadType) {
	var webclipInfo = {
		url : "http://cubiq.org/",
		startX : 0,
		startY : 0,
		endX : 480,
		endY : 300
	};
	
	this.displayWebclip(webclipInfo);
};
TopstorySegment.prototype.displayWebclip = function(webclipInfo) {
	var webclipIndex = this.getOptionPosition("webclip");
	
	jQuery(this.mainSelector + " .topstory .item:eq(" + webclipIndex + ") .webclip_ifrm").attr("src", webclipInfo.url);
	
	webclipInfo.startX = parseInt(webclipInfo.startX);
	webclipInfo.startY = parseInt(webclipInfo.startY);
    webclipInfo.endX = parseInt(webclipInfo.endX);
    webclipInfo.endY = parseInt(webclipInfo.endY);
    
    if ((webclipInfo.startX < 0) || (webclipInfo.startX == "")) {
    	webclipInfo.startX = 0;
	}
	if ((webclipInfo.startY < 0) || (webclipInfo.startY == "")) {
		webclipInfo.startY = 0;
	}
	if ((webclipInfo.endY < 0) || (webclipInfo.endY == "")) {
		webclipInfo.endY = 300;
	}
	
	var webclip_widths = webclipInfo.endX - webclipInfo.startX;
	var webclip_heights = webclipInfo.endY - webclipInfo.startY;
    if (webclip_heights <= 300) {
    	webclip_heights = 300;
    }
	
    jQuery(this.mainSelector + " .topstory .item:eq(" + webclipIndex + ") .webclip_ifrm").css({
		left : "-" + webclipInfo.startX + "px",
		top : "-" + webclipInfo.startY + "px"
	});
	jQuery(this.mainSelector + " .topstory .item:eq(" + webclipIndex + ") .webclip").css("height", webclip_heights + "px");
	jQuery(this.mainSelector + " .topstory .item:eq(" + webclipIndex + ") .webclip_ifrm").css("height", (webclipInfo.startY + webclip_heights) + "px");
    
	// bind webclip link
	var eventType = chsConstants.tapReplaceEvent;
	jQuery(this.mainSelector + " .topstory .item:eq(" + webclipIndex + ") .item_cover").unbind(eventType).bind(eventType, { cloudHomeScreen : this.request, homeId : this.homeId, sgmtId : this.sgmtId, url : webclipInfo.url }, function(event) {
		if (isMyEvent(event) && isLeftButtonClick(event)) {
			var cloudHomeScreen = event.data.cloudHomeScreen,
				homeId = event.data.homeId,
				sgmtId = event.data.sgmtId,
				segmentObj = cloudHomeScreen.getSegmentManager().getSegmentObject(homeId, sgmtId),
				url = event.data.url,
				homeEventHandler = cloudHomeScreen.getEventHandler(),
				segmentScrollInfo = homeEventHandler.segmentScroll[homeId + sgmtId + "Section"];
			
			if (segmentScrollInfo && !segmentScrollInfo.isMove) {
				homeEventHandler.openLink(url);
			}
		}
	});
};
TopstorySegment.prototype.getOptionPosition = function(type) {
	for (var i=0, count=this.option.length ; i<count ; ++i) {
		var topstoryInfo = this.topstoryInfo[this.option[i]];
		if (topstoryInfo && (topstoryInfo.type == type)) {
			return i;
		}
	}
	
	return -1;
};
TopstorySegment.prototype.getTopstoryList = function() {
	var list = [];
	for (var topstory in this.topstoryInfo) {
		if (this.topstoryInfo.hasOwnProperty(topstory)) {
			var info = this.topstoryInfo[topstory],
				item = {
					id : topstory,
					name : info.name,
					useYn : this.hasOption(topstory)
				};
			list.push(item);
		}
	}
	
	return list;
};
TopstorySegment.prototype.hasOption = function(topstoryId) {
	for (var i=0, count=this.option.length ; i<count ; ++i) {
		var id = this.option[i];
		if (id == topstoryId) {
			return true;
		}
	}
	
	return false;
};
TopstorySegment.prototype.startEditMode = function() {
	var cloudHomeScreen = this.request,
		homeEventHandler = cloudHomeScreen.getEventHandler(),
		segmentManager = cloudHomeScreen.getSegmentManager(),
		homeId = this.homeId,
		sgmtId = this.sgmtId;
	
	this.setIScroll();
	
	// hide items except first one
	jQuery(this.mainSelector + " .topstory .item").each(function(i) {
		if (i != 0) {
			jQuery(this).hide();
		}
	});
	jQuery(this.mainSelector + " .topstory .arrow_container").hide();		// hide arrow container
	
//	bind event into section
	var segmentObj = this;
	if (chsConstants.isMobile) {
		var eventList = "taphold touchmove touchend touchcancel";
		jQuery(this.mainSelector + " .segment_cover").unbind(eventList).bind(eventList, function(event) {
			var condition = homeEventHandler.segmentDragHandler(event, this);
			
			if (condition) {
				segmentManager.startSegmentEditDetail(homeId, sgmtId, "topstory");
			}
		});
	} else {
		jQuery(this.mainSelector + " .segment_cover").unbind("click").bind("click", function(event) {
			if (isMyEvent(event) && isLeftButtonClick(event)) {
				var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId),
					hash = "editDetail",
					actionParams = segmentManager.getPopupInfo("topstory", { segmentObj : segmentObj });
				
				segmentObj.saveCurrentOption();
				cloudHomeScreen.setHash(hash, actionParams);
			}
		});
	}
};
TopstorySegment.prototype.finishEditMode = function() {
	jQuery(this.mainSelector + " .topstory .item").show();		// show all items
	jQuery(this.mainSelector + " .topstory .arrow_container").show();		// hide arrow container
	
	this.setMovingAreaWidth();
	this.setIScroll();
};
TopstorySegment.prototype.setMovingAreaWidth = function() {
	var itemCount = jQuery(this.mainSelector + " .topstory .item").size(),
		itemWidth = jQuery(this.mainSelector + " .topstory").outerWidth(true);
	
	jQuery(this.mainSelector + " .topstory > *:first").css("width", itemCount * itemWidth);
};
TopstorySegment.prototype.setIScroll = function() {
	try {
		var id = this.homeId + this.sgmtId + "Section";
		var options = { hScroll : true, vScroll : false, hScrollbar : true, vScrollbar : false, hideScrollbar : true, fadeScrollbar : true, desktopCompatibility : true, snap : "li", momentum : false, hidden : true };
		var buttons = {
				prev : "#" + this.homeId + this.sgmtId + "_slidePrev",
				next : "#" + this.homeId + this.sgmtId + "_slideNext"
		};

		var homeEventHandler = this.request.getEventHandler();
		if (homeEventHandler.hasIScroll(id) && (jQuery(this.mainSelector + " .item").size() > 0)) {
			homeEventHandler.refreshIScroll(id);
			homeEventHandler.scrollToPage(id, 0, 0, 0);
		} else {
			homeEventHandler.createIScroll(id, options, buttons);
		}
	} catch (e) {
		console.warn(e.message);
	}
};
TopstorySegment.prototype.onRemoved = function() {
	var homeEventHandler = this.request.getEventHandler();
	
	homeEventHandler.removeLocalStorage("topstoryWeatherInfo");
	homeEventHandler.removeLocalStorage("topstoryNewsInfo");
};


/** SNS SEGMENT */
var SnsSegment = function(request) {
	this.request = request;
	this.initOption = ["twt", "fb", "fsq"];
	this.option = [];
	this.initSnsSegment();
	this.setSegmentType("snsfeeds");
};
SnsSegment.prototype = new Segment();
SnsSegment.prototype.initSnsSegment = function() {
	this.snsfeeds = [];
	this.feedGetCount = 0;
	this.snsInfo = {
		"twt"	: { name : "twitter", count : 5 },
		"fb"	: { name : "facebook", count : 5 },
		"fsq"	: { name : "foursquare", count : 5 }
	};
};
SnsSegment.prototype.initSegmentOption = function() {
	var snsManager = this.request.getSnsManager(),
		list = [];
	
	for (var snsId in this.snsInfo) {
		if (this.snsInfo.hasOwnProperty(snsId)) {
			var sns = this.snsInfo[snsId];
			if (snsManager.getManager(sns.name) && this.hasOption(snsId)) {
				list.push(snsId);
			}
		}
	}
	
	this.setOption(list);
};
SnsSegment.prototype.load = function(homeId, sgmtId, option, loadType) {
	this.setProperties(homeId, sgmtId, option);
	if (this.option.toString() == "[object Object]") {
		this.setOption(this.getInitOption());
		this.request.getSegmentManager().setSegmentOption(homeId, sgmtId, this.option, true);
	}
	this.initSegmentOption();
	this.configSnsSegment();
	this.getSnsFeeds(loadType);
};
SnsSegment.prototype.configSnsSegment = function() {
	var currentItemCount = jQuery(this.mainSelector + " .snsfeeds .item").size(),
		count = this.getTotalFeedCount(),
		noContentItem = jQuery(this.mainSelector + " .snsfeeds .item.no_content");
	
	if (noContentItem.size() > 0) {
		jQuery(noContentItem).remove();
		currentItemCount -= 1;
	}
	
	if (currentItemCount > count) {
		jQuery(this.mainSelector + " .snsfeeds .item:gt(" + (count - 1) + ")").remove();
	} else if (count > currentItemCount) {
		for (var i=0,appendCount=count-currentItemCount ; i<appendCount ; ++i) {
			jQuery(this.mainSelector + " .snsfeeds > div:first").append(this.getItem());
		}
	}
	this.setMovingAreaWidth();
	this.request.getEventHandler().refreshScreenWidth(this.mainSelector);
};
SnsSegment.prototype.getItem = function() {
	var innerHTML = "<li class=\"item\">" +
						"<div class=\"screen\">" +
							"<figure>" +
								"<img>" +
								"<p class=\"name\"></p>" +
							"</figure>" +
							"<div class=\"cont-text\">" +
								"<p class=\"article\"></p>" +
								"<p class=\"date\"></p>" +
							"</div>" +
						"</div>" +
						"<div class=\"item_cover\"></div>" +
					"</li>";
	
	return innerHTML;
};
SnsSegment.prototype.displayNoContent = function() {
	var innerHTML = "<li class=\"item no_content\">" +
						"<div class=\"screen\">" +
							"<div class=\"message\">Please get Access Token first.</div>" +
							"<div class=\"message\"><a>Account</a></div>" +
						"</div>" +
					"</li>";
	jQuery(this.mainSelector + " .snsfeeds > div:first").html(innerHTML);
	this.request.getEventHandler().refreshScreenWidth(this.mainSelector);
	
	this.setMovingAreaWidth();
	jQuery(this.mainSelector + " .snsfeeds .arrow_container").hide();
	
	jQuery(this.mainSelector + " .snsfeeds .message:last a").attr("href", "javascript:chs.homeEventHandler.openLink('http://" + location.host + "/aphone/sns/account');");
};
SnsSegment.prototype.getSnsFeeds = function(loadType) {
	this.feedGetCount = 0;
	this.snsfeeds = [];
	if (this.option.length > 0) {
		if (navigator.onLine || true && (loadType != "cache")) {		// FIX_NAVI
			for (var i=0, count=this.option.length ; i<count ; ++i) {
				var snsId = this.option[i];
				if (snsId == "twt") {
					this.getTwitter();
				} else if (snsId == "fb") {
					this.getFacebook();
				} else if (snsId == "fsq") {
					this.getFoursquare();
				}
			}
		} else {
			var lsSnsfeeds = this.request.getEventHandler().getLocalStorage(this.homeId + "_" + this.sgmtId + "_snsfeeds");
			if (nvl(lsSnsfeeds) != "") {
				this.snsfeeds = JSON.parse(lsSnsfeeds);
				this.displaySnsFeeds();
				
				this.setMovingAreaWidth();
				this.setIScroll();
			} else {
				this.displayNoContent();
			}
		}
	} else {
		this.displayNoContent();
	}
};
SnsSegment.prototype.feedReadyCheck = function() {
	if (++this.feedGetCount == this.option.length) {
		this.feedGetCount = 0;
		this.feedsSorting();
		this.displaySnsFeeds();
		
		this.setMovingAreaWidth();
		this.setIScroll();
	}
};
SnsSegment.prototype.getTwitter = function() {
	var segmentObj = this,
		twitterManager = this.request.getSnsManager().twitterManager;
	
	if (twitterManager) {
		twitterManager.getHomeTimeline(function(result) {
			segmentObj.getTwitterTimelineCallback(result);
		}, { count : 5 });
	} else {
		this.feedReadyCheck();
	}
};
SnsSegment.prototype.getTwitterTimelineCallback = function(result) {
	if (nvl(result) != "") {
		var timeline = JSON.parse(result);
		if (timeline.length > 0) {
			for (var i=0, feedCount=timeline.length, count=this.getFeedCount("twt") ; ((i<feedCount) && (i<count)) ; ++i) {
				var feed = timeline[i],
					profileImage = this.getProfileImage(feed.user.profile_image_url),
					name = feed.user.name,
					text = feed.text,
					time = (new Date(feed.created_at)).getTime(),
					url = "http://twitter.com/#!/" + feed.user.screen_name + "/status/" + feed.id_str;
				
				this.snsfeeds.push({ image : profileImage, name : name, message : text, time : time, url : url, type : "twitter" });
			}
		}
	} else {
		// error message
	}
	
	this.feedReadyCheck();
};
SnsSegment.prototype.getFacebook = function() {
	var segmentObj = this,
		facebookManager = this.request.getSnsManager().facebookManager;
	
	if (facebookManager) {
		facebookManager.getNewsfeeds(function(response) {
			segmentObj.getFacebookCallback(response);
		});
	} else {
		this.feedReadyCheck();
	}
};
SnsSegment.prototype.getFacebookCallback = function(response) {
	if (response != null) {
		var data = response.data,
			count = this.getFeedCount("fb");
		for (var i=0, feedCount=data.length ; ((i<feedCount) && (i<count)) ; ++i) {
			var feed = data[i];
			
			if (feed.message != null) {
				var profileImage = "http://graph.facebook.com/" + feed.from.id + "/picture?type=large",
					name = feed.from.name,
					message = feed.message,
					time = getDateFromString(feed.updated_time).getTime(),
					url = ((feed.actions != null) ? feed.actions[0].link : ""),
					feedInfo = {
						type : feed.type
					};
				
				if ((feed.type == "photo") || (feed.type == "link") || (feed.type == "video")) {
					feedInfo.picture = feed.picture;
					
					if ((feed.type == "video")) {
						feedInfo.source = feed.source;
					}
				}
				
				this.snsfeeds.push({ image : profileImage, name : name, message : message, time : time, url : url, feedInfo : feedInfo, type : "facebook" });
			}
		}
	} else {
		// error message
	}
	
	this.feedReadyCheck();
};
SnsSegment.prototype.getFoursquare = function() {
	var segmentObj = this,
		foursquareManager = this.request.getSnsManager().foursquareManager;
	
	if (foursquareManager) {
		foursquareManager.getRecentCheckins(function(result) {
			segmentObj.getFoursquareCallback(result);
		}, { limit : 5 });
	} else {
		this.feedReadyCheck();
	}
};
SnsSegment.prototype.getFoursquareCallback = function(result) {
	if (nvl(result) != "") {
		var resultObj = JSON.parse(result),
			recent = resultObj.response.recent,
			count = this.getFeedCount("fsq");
		for (var i=0, recentCount=recent.length ; ((i<recentCount) && (i<count)) ; ++i) {		
			var checkin = recent[i],
				name = checkin.user.lastName + checkin.user.firstName,
				userImage = checkin.user.photo,
				message = nvl(checkin.shout),
				time = (new Date(checkin.createdAt * 1000)).getTime();
			
			if (checkin.venue) {
				message += " @ " + checkin.venue.name; 
			}
			
			this.snsfeeds.push({ image : userImage, name : name, message : message, time : time, url : null, type : "foursquare" });
		}
	} else {
		// error message
	}
	
	this.feedReadyCheck();
};
SnsSegment.prototype.displaySnsFeeds = function() {
	var cloudHomeScreen = this.request,
		homeEventHandler = cloudHomeScreen.getEventHandler(),
		segmentManager = cloudHomeScreen.getSegmentManager(),
		homeId = this.homeId,
		sgmtId = this.sgmtId,
		totalFeedCount = this.getTotalFeedCount(),
		feedCount = this.snsfeeds.length,
		eventType = chsConstants.tapReplaceEvent;
	
	
	// exception handling
	if (totalFeedCount != feedCount) {
		if (feedCount < totalFeedCount) {
			for (var i=totalFeedCount-1 ; i>=feedCount ; --i) {
				jQuery(this.mainSelector + " .snsfeeds .item:eq(" + i + ")").remove();
			}
		}
		
		if (feedCount == 0) {
//			this.request.getEventHandler().inCaseOfNoContents(this.sgmtId);
			return;
		}
	}
	
	for (var i=0 ; i<feedCount ; ++i) {
		var feed = this.snsfeeds[i],
			image = nvl(feed.image),
			name = nvl(feed.name),
			message = nvl(feed.message),
			time = feed.time || (new Date()).getTime(),
			timeLog = getTimeDifference(new Date(time)),
			url = nvl(feed.url),
			type = nvl(feed.type),
			logo = "<img class=\"logo\" src=\"/aphone/images/chs/home_icon_" + type + ".png\">",
			feedInfo = this.snsfeeds[i].feedInfo;
				
		jQuery(this.mainSelector + " .snsfeeds .item:eq(" + i + ") figure img").getCachedImage(image, "sns_profile_image_" + i).load(function() {
			jQuery(this).fadeIn("fast");
		});		// profile image & name
		jQuery(this.mainSelector + " .snsfeeds .item:eq(" + i + ") .name").html(name);		// name
		jQuery(this.mainSelector + " .snsfeeds .item:eq(" + i + ") .article").html(message);		// message
		jQuery(this.mainSelector + " .snsfeeds .item:eq(" + i + ") .date").html(logo + timeLog);		// date
		
		// typeInfo
		if (feedInfo) {
			if (feedInfo.type != "status") {
				// append video tag
				if ((jQuery(this.mainSelector + " .snsfeeds .item:eq(" + i + ") .video").size() == 0) && feedInfo.picture) {
					jQuery(this.mainSelector + " .snsfeeds .item:eq(" + i + ") .cont-text").prepend("<p class=\"video\"><img></p>");
					jQuery(this.mainSelector + " .snsfeeds .item:eq(" + i + ") .video img").getCachedImage(feedInfo.picture, "sns_video_image_" + i).load(function() {
						jQuery(this).fadeIn("fast");
					});
				}
				
				if (feedInfo.type == "video") {
					// append play button
					if (jQuery(this.mainSelector + " .snsfeeds .item:eq(" + i + ") .button_play").size() == 0) {
						jQuery(this.mainSelector + " .snsfeeds .item:eq(" + i + ") .screen").append("<span class=\"button_play\"></span>");
					}
					jQuery(this.mainSelector + " .snsfeeds .item:eq(" + i + ") .button_play").unbind(eventType).bind(eventType, { source : feedInfo.source }, function(event) {
						if (isMyEvent(event) && isLeftButtonClick(event)) {
							var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId),
								source = event.data.source,
								segmentScrollInfo = homeEventHandler.segmentScroll[homeId + sgmtId + "Section"];
							
							if (segmentScrollInfo && !segmentScrollInfo.isMove) {
								homeEventHandler.onVideoPlayButtonClick(source);
							}
						}
					});
				}
			}
		}
	}
	
	// set local storage
	this.request.getEventHandler().setLocalStorage(this.homeId + "_" + this.sgmtId + "_snsfeeds", JSON.stringify(this.snsfeeds));
};
SnsSegment.prototype.feedsSorting = function() {
	this.snsfeeds = selectionSort(this.snsfeeds, "time", "desc");
};
SnsSegment.prototype.getProfileImage = function(imageUrl) {
	if (imageUrl && (imageUrl != "")) {
		if (imageUrl.indexOf("default_profile") != -1) {
			return imageUrl;
		} else {
			return imageUrl.replace("_normal", "");
		}
	} else {
		// 자체 기본 이미지
	}
};
SnsSegment.prototype.getFeedCount = function(snsId) {
	if (this.snsInfo.hasOwnProperty(snsId)) {
		return this.snsInfo[snsId].count;
	}
	
	return 0;
};
SnsSegment.prototype.getTotalFeedCount = function() {
	var total = 0;
	
	for (var i=0, count=this.option.length  ; i<count ; ++i) {
		total += this.getFeedCount(this.option[i]);
	}
	
	return total;
};
SnsSegment.prototype.getSnsList = function() {
	var snsManager = this.request.getSnsManager(),
		list = [];
	
	this.initSegmentOption();
	for (var snsId in this.snsInfo) {
		if (this.snsInfo.hasOwnProperty(snsId)) {
			var sns = this.snsInfo[snsId];
			
			if (snsManager.getManager(sns.name)) {
				list.push({ id : snsId, name : sns.name, useYn : this.hasOption(snsId) });
			}
		}
	}
	
	return list;
};
SnsSegment.prototype.hasOption = function(id) {
	for (var i=0, count=this.option.length ; i<count ; ++i) {
		if (this.option[i] == id) {
			return true;
		}
	}
	
	return false;
};
SnsSegment.prototype.updateOption = function(checkboxInfo) {
	var newOption = [];
	
	for (var i=0, count=checkboxInfo.length ; i<count ; ++i) {
		var checkbox = checkboxInfo[i];
		if (checkbox.useYn) {
			newOption.push(checkbox.id);
		}
	}
	
	this.setOption(newOption);
};
SnsSegment.prototype.startEditMode = function() {
	var cloudHomeScreen = this.request,
		homeEventHandler = cloudHomeScreen.getEventHandler(),
		segmentManager = cloudHomeScreen.getSegmentManager(),
		homeId = this.homeId,
		sgmtId = this.sgmtId;
	
	this.setIScroll();
	
	// hide items except first one
	jQuery(this.mainSelector + " .snsfeeds .item").each(function(i) {
		if (i != 0) {
			jQuery(this).hide();
		}
	});
	jQuery(this.mainSelector + " .snsfeeds .arrow_container").hide();
	
	if (chsConstants.isMobile) {
		var eventList = "taphold touchmove touchend touchcancel";
		jQuery(this.mainSelector + " .segment_cover").unbind(eventList).bind(eventList, function(event) {
			var condition = homeEventHandler.segmentDragHandler(event, this);
			
			if (condition) {
				segmentManager.startSegmentEditDetail(homeId, sgmtId, "snsfeeds");
			}
		});
	} else {
		jQuery(this.mainSelector + " .segment_cover").unbind("click").bind("click", function(event) {
			if (isMyEvent(event) && isLeftButtonClick(event)) {
				var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId),
					hash = "editDetail",
					actionParams = segmentManager.getPopupInfo("snsfeeds", { segmentObj : segmentObj });
				
				segmentObj.saveCurrentOption();
				cloudHomeScreen.setHash(hash, actionParams);
			}
		});
	}
};
SnsSegment.prototype.finishEditMode = function() {
	jQuery(this.mainSelector + " .snsfeeds .item").show();
	jQuery(this.mainSelector + " .snsfeeds .arrow_container").show();
	
	this.setMovingAreaWidth();
	this.setIScroll();
};
SnsSegment.prototype.setMovingAreaWidth = function() {
	var itemCount = jQuery(this.mainSelector + " .snsfeeds .item").size(),
		itemWidth = jQuery(this.mainSelector + " .snsfeeds .item:first").outerWidth(true);
	
	jQuery(this.mainSelector + " .snsfeeds > *:first").css("width", itemCount * itemWidth);
};
SnsSegment.prototype.setIScroll = function() {
	try {
		var id = this.homeId + this.sgmtId + "Section";
		var options = { hScroll : true, vScroll : false, hScrollbar : true, vScrollbar : false, hideScrollbar : true, fadeScrollbar : true, desktopCompatibility : true, snap : "li", momentum : false, hidden : true };
		var buttons = {
				prev : "#" + this.homeId + this.sgmtId + "_slidePrev",
				next : "#" + this.homeId + this.sgmtId + "_slideNext"
		};

		var homeEventHandler = this.request.getEventHandler();
		if (homeEventHandler.hasIScroll(id) && (jQuery(this.mainSelector + " .item").size() > 0)) {
			homeEventHandler.refreshIScroll(id);
			homeEventHandler.scrollToPage(id, 0, 0, 0);
		} else {
			homeEventHandler.createIScroll(id, options, buttons);
		}
	} catch (e) {
		console.warn(e.message);
	}
};
SnsSegment.prototype.onRemoved = function() {
	var homeEventHandler = this.request.getEventHandler();
	
	homeEventHandler.removeLocalStorage(this.homeId + "_" + this.sgmtId + "_snsfeeds");
};


/** NEWS SEGMENT */
var NewsSegment = function(request) {
	this.request = request;
	this.initOption = {};
	this.option = {};
	this.feedInfo = {};
	this.setSegmentType("news");
};

NewsSegment.prototype = new Segment();
NewsSegment.prototype.load = function(homeId, sgmtId, option, loadType) {
	if (loadType != "cache") {
		this.loadType = "new";
	}
	this.setProperties(homeId, sgmtId, option);
//	this.getAPNewsFeeds(loadType);
	if (sgmtId.indexOf("NEWS_000") != -1) {
		return;
	}
	this.getYHNewsFeeds(loadType);
};
NewsSegment.prototype.getAPNewsFeeds = function(loadType) {
	if (navigator.onLine || true && (loadType != "cache") && (this.sgmtId.indexOf("AP") != -1)) {		// FIX_NAVI
		var segmentObj = this,
			categoryId = this.request.getSegmentManager().getSegmentDescription(this.sgmtId),
			api = "http://hosted2.ap.org/atom/APDEFAULT/" + categoryId;
		
		getExternalData({
			url : api,
			type : "GET",
			dataType : "xml",
			success : function(xml) {
				var newsInfo = segmentObj.parseNewsInfo(xml);
				if (newsInfo.length > 0) {
					segmentObj.configNewsSegment(newsInfo.length, segmentObj.loadType);
					segmentObj.displayNewsFeeds(newsInfo);
				}
			},
			error : function(error) {
				var message = "[NewsSegment.getAPNewsFeeds()] status : " + error.status + ", " + error.responseText + ", " + error.statusText;
				segmentObj.request.getEventHandler().showErrorMessage(message);
			}
		});
	} else {
		var lsNewsInfo = this.request.getEventHandler().getLocalStorage(this.homeId + "_" + this.sgmtId + "_newsInfo");
		if (nvl(lsNewsInfo) != "") {
			var newsInfo = JSON.parse(lsNewsInfo);
			this.configNewsSegment(newsInfo.length, "new");
			this.displayNewsFeeds(newsInfo);
		}
	}
};
NewsSegment.prototype.getYHNewsFeeds = function(loadType) {
	if (navigator.onLine || true && (loadType != "cache") && (this.sgmtId.indexOf("YH") != -1)) {		// FIX_NAVI
		var segmentObj = this,
			homeEventHandler = this.request.getEventHandler(),
			categoryId = this.request.getSegmentManager().getSegmentDescription(this.sgmtId),
			api = "http://news.yahoo.com/rss/" + categoryId;
		
//		if (chsConstants.workerExist) {
//			var data = {
//				url : "/aphone/externalData",
//				type : "POST",
//				data : "api=" + encodeURIComponent(api) + "&method=get"
//			};
//			homeEventHandler.executeWorker("getYHNewsFeeds_" + this.sgmtId, data, function(xhr) {
//				if (xhr.status == 200) {
//					var result = xhr.responseText;
//					if (result) {
//						var xml = getXmlDoc(result);
//						segmentObj.getYHNewsFeedsCallback(xml);
//					}
//				} else {
//					homeEventHandler.showAjaxError("NewsSegment.getYHNewsFeeds()", xhr);
//				}
//			});
//		} else {
			getExternalData({
				url : api,
				type : "GET",
				dataType : "xml",
				success : function(xml) {
					segmentObj.getYHNewsFeedsCallback(xml);
				},
				error : function(error) {
					homeEventHandler.showAjaxError("NewsSegment.getYHNewsFeeds()", error);
					segmentObj.displayErrorMessage();
				}
			});
//		}
	} else {
		var lsNewsInfo = this.request.getEventHandler().getLocalStorage(this.homeId + "_" + this.sgmtId + "_newsInfo");
		if (nvl(lsNewsInfo) != "") {
			var newsInfo = JSON.parse(lsNewsInfo);
			this.configNewsSegment(newsInfo.length, "new");
			this.displayNewsFeeds(newsInfo);
		}
	}
};
NewsSegment.prototype.getYHNewsFeedsCallback = function(xml) {
	var newsInfo = this.parseYHNewsInfo(xml);
	if (newsInfo.length > 0) {
		this.configNewsSegment(newsInfo.length, this.loadType);
		this.displayNewsFeeds(newsInfo);
		
		this.checkEditMode();
	}
};
NewsSegment.prototype.configNewsSegment = function(count, loadType) {
	if (loadType == "new") {
		var currentItemCount = jQuery(this.mainSelector + " .news .item").size();
		
		if (currentItemCount > count) {
			jQuery(this.mainSelector + " .news .item:gt(" + (count - 1) + ")").remove();
		} else if (count > currentItemCount) {
			for (var i=0, appendCount=count-currentItemCount ; i<appendCount ; ++i) {
				jQuery(this.mainSelector + " .news > div:first").append(this.getItem());
			}
		}
	} else if (loadType == "period") {
		// append new content
		var position = jQuery(this.mainSelector + " .news > div:first > .item:first")[0];
		for (var i=0 ; i<count ; ++i) {
			jQuery(position).before(this.getItem());
		}
	}
	this.request.getEventHandler().refreshScreenWidth();
};
NewsSegment.prototype.displayErrorMessage = function() {
	var itemCount = jQuery(this.mainSelector + " .item").size();
	
	// error & no cached news
	if (itemCount == 0) {
		jQuery(this.mainSelector + " .news > div:first").html(this.getErrorItem());
		this.request.getEventHandler().refreshScreenWidth(this.mainSelector);
	}
	
	this.setMovingAreaWidth();
	this.setIScroll();
};
NewsSegment.prototype.getItem = function() {
	var newsItem = document.createElement("li"),
		innerHTML = "<div class=\"screen\">" +
						"<figure>" +
							"<img>" +
						"</figure>" +
						"<div class=\"cont-text\">" +
							"<h3></h3>" +	
							"<p class=\"article\"></p>" +
							"<p class=\"date\"></p>" +
						"</div>" +
						"<div class=\"item_cover\"></div>" +
					"</div>";
	jQuery(newsItem).addClass("item").html(innerHTML);
	
	return newsItem;
};
NewsSegment.prototype.getErrorItem = function() {
	var item = document.createElement("li"),
		innerHTML = "<div class=\"screen\">" +
						"<div class=\"message\">Yahoo News RSS is currently unavailable.</div>" +
					"</div>";
	
	jQuery(item).addClass("item").addClass("no_content").html(innerHTML);
	
	return item;
};
NewsSegment.prototype.parseNewsInfo = function(xml) {
	var newsInfo = [],
		root = xml.documentElement,
		updated = jQuery(root).children("updated").text(),
		entry = jQuery(root).children("entry"),
		rand = parseInt(Math.random()*6),
		newsCount = ((this.loadType == "new") ? 5 : 1);
	
	if ((this.loadType != "period") || (this.feedInfo.latestNewsUpdatedTime != updated)) {
		this.feedInfo.latestNewsUpdatedTime = updated;
		
		for (var i=0, count=entry.length ; i<count ; ++i) {
			var news = entry[i],
				item = {
					id : jQuery(news).children("id").text(),
					title : jQuery(news).children("title").text(),
					summary : jQuery(news).children("summary").text(),
					date : getDateFromString(jQuery(news).children("updated").text()),
					link : jQuery(news).children("link").attr("href"),
					image : "http://www.ap.org/media/demo_images/photo" + ((rand++)%6 + 1) + ".jpg"
				};
			
			if (((this.loadType != "period") && (i == newsCount)) || ((this.loadType == "period") && (this.feedInfo.latestFeedId == item.id))) {
				break;
			}
			
			newsInfo.push(item);
		}
	}
	
	if (newsInfo.length > 0) {
		this.feedInfo.latestFeedId = newsInfo[0].id;
	}
	
	return newsInfo;
};
NewsSegment.prototype.parseYHNewsInfo = function(xml) {
	var newsInfo = [],
		root = xml.documentElement,
		channel = jQuery(root).children("channel"),
		pubDate = jQuery(channel).children("pubDate").text(),
		items = jQuery(channel).children("item"),
		newsCount = ((this.loadType == "new") ? 5 : 1),
		newsList = { "all" : [], "image" : [], "title" : [], "else" : [] };
	
	if ((this.loadType != "period") || (this.feedInfo.latestPublishedDate != pubDate)) {
		this.feedInfo.latestPublishedDate = pubDate;
		
		for (var i=0, count=items.length ; i<count ; ++i) {
			var item = items.get(i),
				feed = {
					id : jQuery(item).children("guid").text(),
					title : jQuery(item).children("title").text(),
					summary : jQuery(item).children("description").text(),
					date : getDateFromString(jQuery(item).children("pubDate").text()),
					link : jQuery(item).children("link").text(),
					image : jQuery(item).children("media\\:content").attr("url")
				},
				summaryStartIndex = feed.summary.indexOf("</a>"),
				summaryEndIndex = feed.summary.indexOf("</p>");
		
			feed.summary = feed.summary.substring(((summaryStartIndex == -1) ? 0 : summaryStartIndex+4), ((summaryEndIndex == -1) ? feed.summary.length : summaryEndIndex));
			
			if ((this.loadType == "period") && (this.feedInfo.latestFeedId == feed.id)) {
				break;
			}
			
			var status = "else";
			if ((feed.image == null) && (feed.summary == "")) {
				status = "title";
			} else {
				if (feed.image && (feed.summary != "")) {
					status = "all";
				} else if (feed.image) {
					status = "image";
				}
			}
			newsList[status].push(feed);
		}
		
		if (newsList["all"].length >= newsCount) {
			newsInfo = newsList["all"].slice(0, newsCount);
		} else {
			newsInfo = newsList["all"];
			
			var remain = newsCount - newsInfo.length;
			if (newsList["image"].length >= remain) {
				for (var i=0 ; i<remain ; ++i) {
					newsInfo.push(newsList["image"][i]);
				}
			} else {
				for (var i=0, addCount=newsList["image"].length ; i<addCount ; ++i) {
					newsInfo.push(newsList["image"][i]);
				}
				
				var remain = newsCount - newsInfo.length;
				if (newsList["title"].length >= remain) {
					for (var i=0 ; i<remain ; ++i) {
						newsInfo.push(newsList["title"][i]);
					}
				} else {
					for (var i=0, addcount=newsList["title"].length ; i<addCount ; ++i) {
						newsInfo.push(newsList["title"][i]);
					}
				}
			}
		}
		
		/*for (var i=0, count=items.length ; i<count ; ++i) {
			var item = items.get(i),
				feed = {
					id : jQuery(item).children("guid").text(),
					title : jQuery(item).children("title").text(),
					summary : jQuery(item).children("description").text(),
					date : getDateFromString(jQuery(item).children("pubDate").text()),
					link : jQuery(item).children("link").text(),
					image : "/aphone/images/chs/no_image.png"
				},
				media = jQuery(item).children("media\\:content").attr("url");
			
			if (media) {
				feed.image = media;
			}
			
			var summaryStartIndex = feed.summary.indexOf("</a>"),
				summaryEndIndex = feed.summary.indexOf("</p>");
			
			feed.summary = feed.summary.substring(((summaryStartIndex == -1) ? 0 : summaryStartIndex+4), ((summaryEndIndex == -1) ? feed.summary.length : summaryEndIndex));
			
			if (((this.loadType != "period") && (i == newsCount)) || ((this.loadType == "period") && (this.feedInfo.latestFeedId == feed.id))) {
				break;
			}
			
			newsInfo.push(feed);
		}*/
	}
	
	if (newsInfo.length > 0) {
		this.feedInfo.latestFeedId = newsInfo[0].id;
		newsInfo = selectionSort(newsInfo, "date", "desc");
	}
	
	return newsInfo;
};
NewsSegment.prototype.displayNewsFeeds = function(newsInfo) {
	var cloudHomeScreen = this.request,
		homeEventHandler = cloudHomeScreen.getEventHandler(),
		segmentManager = cloudHomeScreen.getSegmentManager(),
		homeId = this.homeId,
		sgmtId = this.sgmtId,
		newsCount = newsInfo.length,
		eventType = chsConstants.tapReplaceEvent;

	for (var i=0 ; i<newsCount ; ++i) {
		var feed = newsInfo[i];
		
		jQuery(this.mainSelector + " .item:eq(" + i + ") h3").html(feed.title);		// news title
		jQuery(this.mainSelector + " .item:eq(" + i + ") .article").html(feed.summary);		// news summary
		jQuery(this.mainSelector + " .item:eq(" + i + ") .date").html("<img class=\"logo\" src=\"/aphone/images/chs/home_icon_cnn.png\">" + feed.date.toString().split("+")[0]);		// news date
		jQuery(this.mainSelector + " .item:eq(" + i + ") figure > img").getCachedImage(feed.image, "news_image_" + i).load(function(event) {
			jQuery(this).fadeIn("fast", function(innerEvent) {
				var parentWidth = jQuery(this).parent().outerWidth(true),
					width = jQuery(this).outerWidth(true),
					leftValue = parseInt((width-parentWidth)/2, 10);
				
				if (leftValue < 0) {
					leftValue = 0;
				}
				jQuery(this).css("left", - leftValue);
			});
		});
		
		jQuery(this.mainSelector + " .item:eq(" + i + ") .item_cover").css("cursor", "pointer").unbind(eventType).bind(eventType, { url : feed.link  }, function(event) {
			if (isMyEvent(event) && isLeftButtonClick(event)) {
				var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId),
					url = event.data.url,
					segmentScrollInfo = homeEventHandler.segmentScroll[homeId + sgmtId + "Section"];
				
				if (segmentScrollInfo && !segmentScrollInfo.isMove) {
					homeEventHandler.openLink(url);
				}
			}
		});
	}
	
	if (newsCount > 0) {
		this.setMovingAreaWidth();
		this.setIScroll();
		
		// set local storage
		if (this.loadType == "new") {
			homeEventHandler.setLocalStorage(this.homeId + "_" + this.sgmtId + "_newsInfo", JSON.stringify(newsInfo));
			if (navigator.onLine || true) {		// FIX_NAVI
				homeEventHandler.setInterval(this.homeId + "_" + this.sgmtId + "_getNewsFeeds", function() {
					var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId);
					
					segmentObj.getMoreNewsFeeds();
				}, 10 * 60 * 1000);
			}
		}
	}
};
NewsSegment.prototype.getTopstoryNews = function(caller, location, callbackFunction) {
	// 임의로 개발한 부분임!!
	this.setSegmentId("SGMT_NEWS_YH_001");
	this.loadType = "topstory";
	
	var segmentObj = this,
		categoryId = this.request.getSegmentManager().getSegmentDescription(this.sgmtId),
//		api = "http://hosted2.ap.org/atom/APDEFAULT/" + categoryId;
		api = "http://news.yahoo.com/rss/" + categoryId;
	
	getExternalData({
		url : api,
		type : "GET",
		dataType : "xml",
		success : function(xml) {
			callbackFunction(caller, segmentObj.parseYHNewsInfo(xml));
		},
		error : function(error) {
			var message = "[NewsSegment.getTopstoryNews()] status : " + error.status + ", " + error.responseText + ", " + error.statusText;
			segmentObj.request.getEventHandler().showErrorMessage(message);
		}
	});
};
NewsSegment.prototype.startEditMode = function() {
	var segmentObj = this,
		homeEventHandler = this.request.getEventHandler();
	
	this.setIScroll();
	
	// hide items except first one
	jQuery(this.mainSelector + " .news .item").each(function(i) {
		if (i != 0) {
			jQuery(this).hide();
		}
	});
	jQuery(this.mainSelector + " .news .arrow_container").hide();		// hide arrow container
	
	// Set Segment Drag & Scroll Handler
	if (chsConstants.isMobile) {
		var eventList = "taphold touchmove touchend touchcancel";
		jQuery(this.mainSelector + " .segment_cover").unbind(eventList).bind(eventList, function(event) {
			homeEventHandler.segmentDragHandler(event, this);
		});
	}
	
	homeEventHandler.clearInterval(this.homeId + "_" + this.sgmtId + "_getNewsFeeds");
};
NewsSegment.prototype.finishEditMode = function() {
	var cloudHomeScreen = this.request,
		homeEventHandler = cloudHomeScreen.getEventHandler(),
		segmentManager = cloudHomeScreen.getSegmentManager(),
		homeId = this.homeId,
		sgmtId = this.sgmtId;
	
	jQuery(this.mainSelector + " .news .item").show();		// show all items
	jQuery(this.mainSelector + " .news .arrow_container").show();		// hide arrow container
	
	this.setMovingAreaWidth();
	this.setIScroll();
	
	if (navigator.onLine || true) {		// FIX_NAVI
		homeEventHandler.setInterval(homeId + "_" + sgmtId + "_getNewsFeeds", function() {
			var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId);
			
			segmentObj.getMoreNewsFeeds();
		}, 10 * 60 * 1000);
	}
};
NewsSegment.prototype.getMoreNewsFeeds = function() {
	this.loadType = "period";
//	this.getAPNewsFeeds("server");
	this.getYHNewsFeeds("server");
};
NewsSegment.prototype.setMovingAreaWidth = function() {
	var itemCount = jQuery(this.mainSelector + " .news .item").size(),
		areaWidth = 0;
	for (var i=0 ; i<itemCount ; ++i) {
		areaWidth += jQuery(this.mainSelector + " .news .item:eq(" + i + ")").outerWidth(true);
	}
	jQuery(this.mainSelector + " .news > *:first").css("width", areaWidth + "px");
};
NewsSegment.prototype.setIScroll = function() {
	try {
		var id = this.homeId + this.sgmtId + "Section";
		var options = { hScroll : true, vScroll : false, hScrollbar : true, vScrollbar : false, hideScrollbar : true, fadeScrollbar : true, desktopCompatibility : true, snap : "li", momentum : false, hidden : true };
		var buttons = {
				prev : "#" + this.homeId + this.sgmtId + "_slidePrev",
				next : "#" + this.homeId + this.sgmtId + "_slideNext"
		};

		var homeEventHandler = this.request.getEventHandler();
		if (homeEventHandler.hasIScroll(id) && (jQuery(this.mainSelector + " .item").size() > 0)) {
			homeEventHandler.refreshIScroll(id);
			homeEventHandler.scrollToPage(id, 0, 0, 0);
		} else {
			homeEventHandler.createIScroll(id, options, buttons);
		}
	} catch (e) {
		console.warn(e.message);
	}
};
NewsSegment.prototype.onRemoved = function() {
	var homeEventHandler = this.request.getEventHandler();
	
	homeEventHandler.clearInterval(this.homeId + "_" + this.sgmtId + "_getNewsFeeds");
	homeEventHandler.removeLocalStorage(this.homeId + "_" + this.sgmtId + "_newsInfo");
};


/** WEATHER SEGMENT */
var WeatherSegment = function(request) {
	this.request = request;
	this.initOption = ["ASI|KR|KS013|SEOUL", "ASI|KR|KS009|SUWON", "ASI|KR|KS012|BUSAN", "ASI|KR|KS003|JEJU"];
	this.option = [];
	this.weatherCount = 0;
	this.weatherInfo = {};
	this.setIconMapping();
	this.setSegmentType("weather");
};
WeatherSegment.prototype = new Segment();
WeatherSegment.prototype.setIconMapping = function() {
	this.iconMapping = new Array(45);
	
	var condition = "";
	for (var i=0, count=this.iconMapping.length ; i<count ; ++i) {
		switch (i) {
		case 1:case 2:case 5:case 30:
			condition = "sunny";
			break;
		case 3:case 4:
			condition = "partly_sunny";
			break;
		case 33:case 34:case 35:case 36:case 37:
			condition = "clear";
			break;
		case 7:case 8:case 11:
			condition = "cloudy";
			break;
		case 6:case 31:case 32:case 38:
			condition = "mostly_cloudy";
			break;
		case 12:case 13:case 14:case 18:case 26:case 29:case 39:case 40:
			condition = "rain";
			break;
		case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 43:case 44:
			condition = "snow";
			break;
		case 15:case 16:case 17:case 41:case 42:
			condition = "thunderstorms";
			break;
		default:
			break;
		}
		this.iconMapping[i] = condition;
	}
};
WeatherSegment.prototype.load = function(homeId, sgmtId, option, loadType) {
	this.setProperties(homeId, sgmtId, option);
	// exception handling
	if (this.option.toString() == "[object Object]") {
		this.setOption(null);
		this.request.getSegmentManager().setSegmentOption(homeId, sgmtId, this.option, true);
	}
	
	if (option && (option.length > 0)) {
		this.configWeatherSegment();
		this.loadWeatherSegment(loadType);
	} else {
//		this.request.getEventHandler().inCaseOfNoContents(sgmtId);
	}
};
WeatherSegment.prototype.configWeatherSegment = function() {
	var currentItemCount = jQuery(this.mainSelector + " .weather .item").size(),
		count = this.option.length;
	
	if (currentItemCount > count) {
		jQuery(this.mainSelector + " .weather .item:gt(" + (count - 1) + ")").remove();
	} else if (count > currentItemCount) {
		for (var i=0, appendCount=count-currentItemCount ; i<appendCount ; ++i) {
			jQuery(this.mainSelector + " .weather > div:first").append(this.getItem());
		}
	}
	
	for (var i=0 ; i<count ; ++i) {
		var locCode = this.option[i];
		
		jQuery(this.mainSelector + " .weather .item:eq(" + i + ")").attr("loccode", locCode.replace(/\|/gi, "_"));
	}
	
	this.request.getEventHandler().refreshScreenWidth(this.mainSelector);
};
WeatherSegment.prototype.getItem = function() {
	var innerHTML = "<li class=\"item\">" +
						"<div class=\"screen\">" +
							"<figure>" +
								"<img>" +
							"</figure>" +
							"<div class=\"cont-text\">" +
								"<p class=\"weather_condition\"></p>" +
								"<h3></h3>" +
								"<p class=\"weather_temp\"></p>" +
							"</div>" +
							"<div class=\"item_cover\"></div>" +
						"</div>" +
					"</li>";
	
	return innerHTML;
};
WeatherSegment.prototype.getWeather = function(index) {
	var segmentObj = this,
		api = "http://thale.accu-weather.com/widget/thale/weather-data.asp",
		params = "metric=1&location=" + this.option[index];

	this.weatherCount = 0;
	getExternalData({
		url : api,
		type : "GET",
		data : params,
		dataType : "xml",
		success : function(xml) {
			segmentObj.getWeatherCallback(xml, index);
		},
		error : function(error) {
			var message = "[WeatherSegment.getWeather()] status : " + error.status + ", " + error.responseText + ", " + error.statusText;
			segmentObj.request.getEventHandler().showErrorMessage(message);
		}
	});
};
WeatherSegment.prototype.getWeatherCallback = function(xml) {
	var weatherInfo = this.parseWeatherInfo(xml),
		homeEventHandler = this.request.getEventHandler(),
		segmentManager = this.request.getSegmentManager(),
		homeId = this.homeId,
		sgmtId = this.sgmtId;
	
	this.displayWeather(weatherInfo);
	// set local storage
	this.weatherInfo[weatherInfo.locCode] = weatherInfo;		// save weather information
	homeEventHandler.setLocalStorage(homeId + "_" + sgmtId + "_weatherInfo", JSON.stringify(this.weatherInfo));
	
	if (++this.weatherCount == this.option.length) {
		homeEventHandler.setInterval(homeId + "_" + sgmtId + "_loadWeather", function() {
			var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId);
			
			segmentObj.loadWeatherSegment("period");
		}, 60 * 60 * 1000);
	}
};
WeatherSegment.prototype.loadWeatherSegment = function(loadType) {
	var count = this.option.length;
	if (navigator.onLine || true && (loadType != "cache")) {		// FIX_NAVI
		for (var i=0 ; i<count ; ++i) {
			this.getWeather(i);
		}
	} else {
		var lsWeatherInfo = this.request.getEventHandler().getLocalStorage(this.homeId + "_" + this.sgmtId + "_weatherInfo");
		if (nvl(lsWeatherInfo) != "") {
			this.weatherInfo = JSON.parse(lsWeatherInfo);
			for (var locCode in this.weatherInfo) {
				if (this.weatherInfo.hasOwnProperty(locCode)) {
					var weatherInfo = this.weatherInfo[locCode];
					
					this.displayWeather(weatherInfo);
				}
			}
		}
	}
	
	this.setMovingAreaWidth();
	this.setIScroll();
};
WeatherSegment.prototype.parseWeatherInfo = function(xml) {
	var root = xml.documentElement,
		local = jQuery(root).children("local"),
		currentConditions = jQuery(root).children("currentconditions"),
		forecast = jQuery(root).children("forecast"),
		weatherInfo = {};
	
	if (local.size() > 0) {
		weatherInfo.city = jQuery(local).children("city").text();
		weatherInfo.state = jQuery(local).children("state").text();
	}
	if (currentConditions.size() > 0) {
		weatherInfo.locCode = jQuery(currentConditions).children("url").text().split("code=")[1].replace(" ", "+");
		weatherInfo.weatherText = jQuery(currentConditions).children("weathertext").text();
		weatherInfo.weatherIcon = parseInt(jQuery(currentConditions).children("weathericon").text(), 10);
		weatherInfo.weather = this.iconMapping[weatherInfo.weatherIcon];
		weatherInfo.time = jQuery(currentConditions).children("observationtime").text();
		weatherInfo.temperature = jQuery(currentConditions).children("temperature").text();
		weatherInfo.url = jQuery(currentConditions).children("url").text();
	}
	if (forecast.size() > 0) {
		weatherInfo.day = new Date((forecast ? jQuery(forecast).children("day:first").children("obsdate").text() : null));
	}
	
	return weatherInfo;
};
WeatherSegment.prototype.displayWeather = function(weatherInfo) {
	var locCode = weatherInfo.locCode.replace(/\|/gi, "_");
	
	jQuery(this.mainSelector + " .weather .item[loccode=" + locCode + "] figure > img").attr("src", "/aphone/images/chs/weather/home_weather_" + this.iconMapping[weatherInfo.weatherIcon] + ".png");		// background image
	jQuery(this.mainSelector + " .weather .item[loccode=" + locCode + "] .weather_condition").html(weatherInfo.weatherText);		// weather condition
	jQuery(this.mainSelector + " .weather .item[loccode=" + locCode + "] h3").html(weatherInfo.city);		// city
	jQuery(this.mainSelector + " .weather .item[loccode=" + locCode + "] .weather_temp").html(weatherInfo.temperature + "<img src=\"/aphone/images/chs/home_weather_temp_c.png\">");		// temperature
};
WeatherSegment.prototype.search = function(keyword) {
	var segmentObj = this,
		api = "http://thale.accu-weather.com/widget/thale/city-find.asp",
		param = "location=" + encodeURIComponent(keyword);
	
	getExternalData({
		url : api,
		type : "GET",
		data : param,
		dataType : "xml",
		success : function(xml) {
			segmentObj.searchCallback(xml);
		},
		error : function(error) {
			segmentObj.request.getEventHandler().showAjaxError("WeatherSegment.search()", error);
		}
	});
};
WeatherSegment.prototype.searchCallback = function(xml) {
	var root = xml.documentElement,
		cityList = jQuery(root).children("citylist"),
		location = jQuery(cityList).children("location"),
		homeEventHandler = this.request.getEventHandler();

	var list = {
		left : "none",
		middle : 1,
		right : "checkbox",
		data : [],
		checkbox : {
			required : false,
			removable : false
		}
	};
	if (location && (location.length > 0)) {
		for (var i=0, locationCount=location.length ; i<locationCount ; ++i) {
			var city = jQuery(location[i]).attr("city") + ", " + jQuery(location[i]).attr("state");
			var code = jQuery(location[i]).attr("location");
			var data = {
				line1 : city,
				checkbox : {
					id : code,
					checked : this.hasOption(code)
				}
			};
			list.data.push(data);
		}
	}
	
	homeEventHandler.getSearchList().setList(list);
	// refresh searchlist iscroll
	homeEventHandler.setVerticalIScroll("searchList_iscroll", false);
};
WeatherSegment.prototype.updateOption = function(checkboxInfo) {
	for (var i=0, count=checkboxInfo.length ; i<count ; ++i) {
		if (checkboxInfo[i].useYn) {
			var id = checkboxInfo[i].id;
			if (this.hasOption(id) === false) {
				this.option.push(id);
				
				var value = checkboxInfo[i].value.split("&&")[1].split(",");
				this.weatherInfo[id] = {
					locCode : id,
					city : value[0],
					state : value[1]
				};
			}
		} else {
			for (var j=0, optionCount=this.option.length ; j<optionCount ; ++j) {
				if (this.option[j] == checkboxInfo[i].id) {
					this.option.list.splice(j, 1);
					break;
				}
			}
		}
	}
};
WeatherSegment.prototype.hasOption = function(id) {
	for (var i=0, count=this.option.length ; i<count ; ++i) {
		if (this.option[i] == id) {
			return true;
		}
	}
	
	return false;
};
WeatherSegment.prototype.updateOptionList = function(dataInfo) {
	var newOption = [];
	for (var i=0, count=dataInfo.length ; i<count ; ++i) {
		newOption.push(dataInfo[i].id);
	}
	
	this.option = newOption;
};
WeatherSegment.prototype.getLocationList = function() {
	var locationList = [];
	for (var i=0, count=this.option.length ; i<count ; ++i) {
		var locCode = this.option[i],
			weatherInfo = this.weatherInfo[locCode];
		locationList.push({ id : locCode, name : weatherInfo.city + ", " + weatherInfo.state });
	}
	
	return locationList;
};
WeatherSegment.prototype.getTopstoryWeather = function(caller, location, callbackFunction) {
	var segmentObj = this,
		api = "http://thale.accu-weather.com/widget/thale/weather-data.asp",
		params = "metric=1&slat=" + location.lat + "&slon=" + location.lon;
	
	getExternalData({
		url : api,
		type : "GET",
		data : params,
		dataType : "xml",
		success : function(xml) {
			callbackFunction(caller, segmentObj.parseWeatherInfo(xml));
		},
		error : function(error) {
			segmentObj.request.getEventHandler("WeatherSegment.getTopstoryWeather()", error);
		}
	});
};
WeatherSegment.prototype.startEditMode = function() {
	var cloudHomeScreen = this.request,
		homeEventHandler = cloudHomeScreen.getEventHandler(),
		segmentManager = cloudHomeScreen.getSegmentManager(),
		homeId = this.homeId,
		sgmtId = this.sgmtId;
	
	this.setIScroll();
	
	// hide items except first one
	jQuery(this.mainSelector + " .weather .item").each(function(i) {
		if (i != 0) {
			jQuery(this).hide();
		}
	});
	jQuery(this.mainSelector + " .weather .arrow_container").hide();		// hide arrow container
	
	if (chsConstants.isMobile) {
		var eventList = "tap taphold touchmove touchend touchcancel";
		jQuery(this.mainSelector + " .segment_cover").unbind(eventList).bind(eventList, function(event) {
			var condition = homeEventHandler.segmentDragHandler(event, this);
			
			if (condition) {
				segmentManager.startSegmentEditDetail(homeId, sgmtId, "weather");
			}
		});
	} else {
		jQuery(this.mainSelector + " .segment_cover").unbind("click").bind("click", function(event) {
			if (isMyEvent(event) && isLeftButtonClick(event)) {
				var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId),
					hash = "editDetail",
					actionParams = segmentManager.getPopupInfo("weather", { segmentObj : segmentObj });
				
				segmentObj.saveCurrentOption();
				cloudHomeScreen.setHash(hash, actionParams);
			}
		});
	}
	
	homeEventHandler.clearInterval(homeId + "_" + sgmtId + "_loadWeather");
};
WeatherSegment.prototype.finishEditMode = function() {
	var cloudHomeScreen = this.request,
		homeEventHandler = cloudHomeScreen.getEventHandler(),
		segmentManager = cloudHomeScreen.getSegmentManager(),
		homeId = this.homeId,
		sgmtId = this.sgmtId;
	
	jQuery(this.mainSelector + " .weather .item").show();		// show all items
	jQuery(this.mainSelector + " .weather .arrow_container").show();
	
	this.setMovingAreaWidth();
	this.setIScroll();
	
	homeEventHandler.setInterval(homeId + "_" + sgmtId + "_loadWeather", function() {
		var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId);
		
		segmentObj.loadWeatherSegment("period");
	}, 60 * 60 * 1000);
};
WeatherSegment.prototype.setMovingAreaWidth = function() {
	var itemCount = jQuery(this.mainSelector + " .weather .item").size(),
		areaWidth = 0;
	
	for (var i=0 ; i<itemCount ; ++i) {
		areaWidth += jQuery(this.mainSelector + " .weather .item:eq(" + i + ")").outerWidth(true);
	}
	jQuery(this.mainSelector + " .weather > *:first").css("width", areaWidth + "px");
};
WeatherSegment.prototype.setIScroll = function() {
	try {
		var id = this.homeId + this.sgmtId + "Section";
		var options = { hScroll : true, vScroll : false, hScrollbar : true, vScrollbar : false, hideScrollbar : true, fadeScrollbar : true, desktopCompatibility : true, snap : "li", momentum : false, hidden : true };
		var buttons = {
				prev : "#" + this.homeId + this.sgmtId + "_slidePrev",
				next : "#" + this.homeId + this.sgmtId + "_slideNext"
		};

		var homeEventHandler = this.request.getEventHandler();
		if (homeEventHandler.hasIScroll(id) && (jQuery(this.mainSelector + " .item").size() > 0)) {
			homeEventHandler.refreshIScroll(id);
			homeEventHandler.scrollToPage(id, 0, 0, 0);
		} else {
			homeEventHandler.createIScroll(id, options, buttons);
		}
	} catch (e) {
		console.warn(e.message);
	}
};
WeatherSegment.prototype.onRemoved = function() {
	var homeEventHandler = this.request.getEventHandler();
	
	homeEventHandler.clearInterval(this.homeId + "_" + this.sgmtId + "_loadWeather");
	homeEventHandler.removeLocalStorage(this.homeId + "_"  + this.sgmtId + "_weatherInfo");
};


/** STOCK SEGMENT */
var StockSegment = function(request) {
	this.request = request;
	this.initOption = ["005930.KS", "GOOG", "AAPL", "MSFT", "T"];
	this.option = [];
	this.stockCount = 0;
	this.stockInfo = {};
	this.setSegmentType("stock");
};
StockSegment.prototype = new Segment();
StockSegment.prototype.load = function(homeId, sgmtId, option, loadType) {
	this.setProperties(homeId, sgmtId, option);
	// exception handling
	if (this.option.toString() == "[object Object]") {
		this.setOption(null);
		this.request.getSegmentManager().setSegmentOption(homeId, sgmtId, this.option, true);
	}
	
	if (option && (option.length > 0)) {
		this.configStockSegment();
		this.loadStockSegment(loadType);
		
		// set moving_area width and iscroll
		this.setMovingAreaWidth();
		this.setIScroll();
	} else {
//		this.request.getEventHandler().inCaseOfNoContents(sgmtId);
	}
};
StockSegment.prototype.configStockSegment = function() {
	var currentItemCount = jQuery(this.mainSelector + " .stock .item").size(),
		count = this.option.length;
	
	if (currentItemCount > count) {
		jQuery(this.mainSelector + " .stock .item:gt(" + (count - 1) + ")").remove();
	} else if (count > currentItemCount) {
		for (var i=0, appendCount=count-currentItemCount ; i<appendCount ; ++i) {
			jQuery(this.mainSelector + " .stock > div:first").append(this.getItem());
		}
	}
	
	this.request.getEventHandler().refreshScreenWidth(this.mainSelector);
};
StockSegment.prototype.getItem = function() {
	var innerHTML = "<li class=\"item\">" +
						"<div class=\"screen\">" +
							"<figure>" +
								"<img class=\"graphic\" />" +
							"</figure>" +
							"<div class=\"cont-text\">" +
								"<h3></h3>" +	
								"<p class=\"date\"></p>" +
								"<p class=\"percent\"></p>" +
								"<p class=\"price\"></p>" +
							"</div>" +
							"<div class=\"item_cover\"></div>" +
						"</div>" +
					"</li>";
	
	return innerHTML;
};
StockSegment.prototype.getStock = function() {
	var stockSymbol;
	for (var i=0, count=this.option.length ; i<count ; ++i) {
		if (i == 0) {
			stockSymbol = this.option[i];
		} else {
			stockSymbol += "+" + this.option[i];
		}
	}
	var api = "http://finance.yahoo.com/d/quotes.csv";
	// n(name) d1(last trade date) t1(last trade time)
	// c1(change) p2(change in percent) l1(last trade, price only)
	var params = "s=" + stockSymbol + "&f=snd1t1c1p2l1";

	var segmentObj = this;
	getExternalData({
		url : api,
		type : "GET",
		data : params,
		success : function(result) {
			segmentObj.getStockCallback(result.trim());
		},
		error : function(error) {
			segmentObj.request.getEventHandler().showAjaxError("StockSegment.getStock()", error);
		}
	});
};
StockSegment.prototype.getStockCallback = function(result) {
	if (result && (result != "")) {
		var homeEventHandler = this.request.getEventHandler(),
			segmentManager = this.request.getSegmentManager(),
			homeId = this.homeId,
			sgmtId = this.sgmtId;
		
		this.stockInfo = this.parseStockInfo(result);
		this.displayStock();
		
		homeEventHandler.setInterval(homeId + "_" + sgmtId + "_loadStock", function() {
			var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId);
			
			segmentObj.loadStockSegment("server");
		}, 5 * 60 * 1000);
	}
};
StockSegment.prototype.parseStockInfo = function(result) {
	var rows = result.replace(/\"/gi, "").split("\n"),
		stockInfo = {};
	
	for (var i=0, count=rows.length ; i<count ; ++i) {
		if ((rows[i] == "")) {
			continue;
		}
		var cols = rows[i].replace(/( \,|\, )/gi, ",").split(","),
			symbol = cols[0],
			name = cols[1],
			dateToken = ((cols[2] != "N/A") ? cols[2].split("/") : ["-1", "-1", "0000"]),
			lastUpdated = fillText(dateToken[1], 2, "0", "l") + "." + fillText(dateToken[0], 2, "0", "l") + "." + dateToken[2].substr(2),
			timeToken = ((cols[3] != "N/A") ? cols[3].replace(/(am|pm)/gi, "").split(":") : ["-1", "-1"]),
			change = cols[4],
			percent = cols[5],
			changePercent = change + " (" + percent + ")",
			price = cols[6];
		
		if ((cols[3].indexOf("pm") != -1) && (timeToken[0] != "12")) {
			timeToken[0] = parseInt(timeToken[0], 10) + 12;
		}
		lastUpdated += " / " + timeToken[0] + ":" + timeToken[1];
		
		stockInfo[symbol] = {
			id : symbol,
			name : name,
			lastUpdated : lastUpdated,
			change : change,
			changePercent : changePercent,
			price : price
		};
	}
	
	return stockInfo;
};
StockSegment.prototype.displayStock = function() {
	for (var i=0, compCount=this.option.length ; i<compCount ; ++i) {
		var stock = this.stockInfo[this.option[i]];
		if (stock) {
			jQuery(this.mainSelector + " .stock .item:eq(" + i + ") h3").html(stock.name);		// title
			jQuery(this.mainSelector + " .stock .item:eq(" + i + ") .date").html("last updated<br>" + stock.lastUpdated);		// date
			// change & percent
			if ((stock.change.indexOf("+") != -1) || (stock.change.indexOf("-") != -1)) {
				jQuery(this.mainSelector + " .stock .item:eq(" + i + ") .percent").html(stock.changePercent);

				if (stock.change.indexOf("+") != -1) {
					jQuery(this.mainSelector + " .stock .item:eq(" + i + ") .percent").append("<img src=\"/aphone/images/chs/home_stock_arrow_up.png\" alt=\"up\">");
				} else {
					jQuery(this.mainSelector + " .stock .item:eq(" + i + ") .percent").append("<img src=\"/aphone/images/chs/home_stock_arrow_down.png\" alt=\"down\">");
				}
			} else {
				jQuery(this.mainSelector + " .stock .item:eq(" + i + ") .percent").html("0.00 (0.00%)");
			}
			jQuery(this.mainSelector + " .stock .item:eq(" + i + ") .price").html(addNumericComma(stock.price));		// price
			
			// chart
			var chartUrl = "http://ichart.finance.yahoo.com/b?s=" + this.option[i],
				prevUrl = jQuery(this.mainSelector + " .stock .item:eq(" + i + ") .graphic").attr("src");
			
			jQuery(this.mainSelector + " .stock .item:eq(" + i + ") .graphic").getCachedImage(chartUrl, "stock_chart_" + i).load(function(event) {
				jQuery(this).fadeIn("fast");
			});
			
			
			// 주식 링크 설정
			// var url = "http://finance.yahoo.com/q?s=" +
			// encodeURIComponent(this.getOption().list[i][1]) + "&ql=0";
			// jQuery(stockSelector + " .stock:eq(" + i + ") >
			// .content_cover_normal").unbind("tap", openNewWindow)
			// .bind("tap", { url : url }, openNewWindow);
		}
	}
	
	this.request.getEventHandler().setLocalStorage(this.homeId + "_" + this.sgmtId + "_stockInfo", JSON.stringify(this.stockInfo));
};
StockSegment.prototype.loadStockSegment = function(loadType) {
	if (navigator.onLine || true && (loadType != "cache")) {		// FIX_NAVI
		this.getStock();
	} else {
		var lsStockInfo = this.request.getEventHandler().getLocalStorage(this.homeId + "_" + this.sgmtId + "_stockInfo");
		if (nvl(lsStockInfo) != "") {
			this.stockInfo = JSON.parse(lsStockInfo);
			this.displayStock();
		} else {
//			this.request.getEventHandler().inCaseOfNoContents(sgmtId);
		}
	}
};
StockSegment.prototype.search = function(keyword) {
	var segmentObj = this,
		api = "http://d.yimg.com/autoc.finance.yahoo.com/autoc",
		params = "query=" + keyword + "&callback=YAHOO.Finance.SymbolSuggest.ssCallback";
	
	getExternalData({
		url : api,
		type : "GET",
		data : params,
		complete : function(xhr) {
			if ((xhr.readyState == 4) && (xhr.status == 200)) {
				var result = xhr.responseText;
				segmentObj.searchCallback(result);
			} else {
				segmentObj.request.getEventHandler().showAjaxError("StockSegment.search()", error);
			}
		}
	});
};
StockSegment.prototype.searchCallback = function(result) {
	var homeEventHandler = this.request.getEventHandler(),
		resultSet = JSON.parse(result.substring("YAHOO.Finance.SymbolSuggest.ssCallback".length + 1, result.length - 1)),
		resultList = resultSet.ResultSet.Result,
		list;

	if (resultList && (resultList.length > 0)) {
		list = {
			left : "none",
			middle : 1,
			right : "checkbox",
			data : [],
			checkbox : {
				required : false,
				removable : false
			}
		};
		for (var i=0, count=resultList.length ; i<count ; ++i) {
			var id = resultList[i].symbol;
			var name = resultList[i].name;
			var data = {
				line1 : name + "(" + id + ")",
				checkbox : {
					id : id,
					checked : this.hasOption(id)
				}
			};
			list.data.push(data);
		}
	}
	
	homeEventHandler.getSearchList().setList(list);
	// refresh searchlist iscroll
	homeEventHandler.setVerticalIScroll("searchList_iscroll", false);
};
StockSegment.prototype.updateOption = function(checkboxInfo) {
	for (var i=0, count=checkboxInfo.length ; i<count ; ++i) {
		if (checkboxInfo[i].useYn) {
			var id = checkboxInfo[i].id,
				name = checkboxInfo[i].value.split("&&")[1].split("(")[0];
			
			if (this.hasOption(id) === false) {
				this.option.push(id);
				this.stockInfo[id] = {
					id : id,
					name : name
				};
			}
		} else {
			for (var j=0, optionCount=this.option.length ; j<optionCount ; ++j) {
				if (this.option[j] == checkboxInfo[i].id) {
					this.option.splice(j, 1);
					break;
				}
			}
		}
	}
};
StockSegment.prototype.hasOption = function(id) {
	for (var i=0, count=this.option.length ; i<count ; ++i) {
		if (this.option[i] == id) {
			return true;
		}
	}
	
	return false;
};
StockSegment.prototype.updateOptionList = function(dataInfo) {
	var newOption = [];
	for (var i=0, count=dataInfo.length ; i<count ; ++i) {
		newOption.push(dataInfo[i].id);
	}
	
	this.option = newOption;
};
StockSegment.prototype.getStockList = function() {
	var stockList = [];
	for (var symbol in this.stockInfo) {
		if (this.stockInfo.hasOwnProperty(symbol)) {
			var stockInfo = this.stockInfo[symbol];
			stockList.push({ id : symbol, name : stockInfo.name });
		}
	}
	
	return stockList;
};
StockSegment.prototype.startEditMode = function() {
	var cloudHomeScreen = this.request,
		homeEventHandler = cloudHomeScreen.getEventHandler(),
		segmentManager = cloudHomeScreen.getSegmentManager(),
		homeId = this.homeId,
		sgmtId = this.sgmtId;
	
	this.setIScroll();
	
	// hide items except first one
	jQuery(this.mainSelector + " .stock .item").each(function(i) {
		if (i != 0) {
			jQuery(this).hide();
		}
	});
	jQuery(this.mainSelector + " .stock .arrow_container").hide();		// hide arrow container

	if (chsConstants.isMobile) {
		var eventList = "tap taphold touchmove touchend touchcancel";
		jQuery(this.mainSelector + " .segment_cover").unbind(eventList).bind(eventList, function(event) {
			var condition = homeEventHandler.segmentDragHandler(event, this);
			
			if (condition) {
				segmentManager.startSegmentEditDetail(homeId, sgmtId, "stock");
			}
		});
	} else {
		jQuery(this.mainSelector + " .segment_cover").unbind("click").bind("click", function(event) {
			if (isMyEvent(event) && isLeftButtonClick(event)) {
				var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId),
					hash = "editDetail",
					actionParams = cloudHomeScreen.getSegmentManager().getPopupInfo("stock", { segmentObj : segmentObj });
				
				segmentObj.saveCurrentOption();
				cloudHomeScreen.setHash(hash, actionParams);
			}
		});
	}
	
	homeEventHandler.clearInterval(homeId + "_" + sgmtId + "_loadStock");
};
StockSegment.prototype.finishEditMode = function() {
	var homeEventHandler = this.request.getEventHandler(),
		segmentManager = this.request.getSegmentManager(),
		homeId = this.homeId,
		sgmtId = this.sgmtId;
	
	jQuery(this.mainSelector + " .stock .item").show();		// show all items
	jQuery(this.mainSelector + " .stock .arrow_container").show();		// hide arrow container
	
	this.setMovingAreaWidth();
	this.setIScroll();
	
	homeEventHandler.setInterval(homeId + "_" + sgmtId + "_loadStock", function() {
		var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId);
		
		segmentObj.loadStockSegment("server");
	}, 5 * 60 * 1000);
};
StockSegment.prototype.setMovingAreaWidth = function() {
	var itemCount = jQuery(this.mainSelector + " .stock .item").size(),
		areaWidth = 0;
	
	for (var i=0 ; i<itemCount ; ++i) {
		areaWidth += jQuery(this.mainSelector + " .stock .item:eq(" + i + ")").outerWidth(true);
	}
	jQuery(this.mainSelector + " .stock > *:first").css("width", areaWidth + "px");
};
StockSegment.prototype.setIScroll = function() {
	try {
		var id = this.homeId + this.sgmtId + "Section";
		var options = { hScroll : true, vScroll : false, hScrollbar : true, vScrollbar : false, hideScrollbar : true, fadeScrollbar : true, desktopCompatibility : true, snap : "li", momentum : false, hidden : true };
		var buttons = {
				prev : "#" + this.homeId + this.sgmtId + "_slidePrev",
				next : "#" + this.homeId + this.sgmtId + "_slideNext"
		};

		var homeEventHandler = this.request.getEventHandler();
		if (homeEventHandler.hasIScroll(id) && (jQuery(this.mainSelector + " .item").size() > 0)) {
			homeEventHandler.refreshIScroll(id);
			homeEventHandler.scrollToPage(id, 0, 0, 0);
		} else {
			homeEventHandler.createIScroll(id, options, buttons);
		}
	} catch (e) {
		console.warn(e);
	}
};
StockSegment.prototype.onRemoved = function() {
	var homeEventHandler = this.request.getEventHandler();
	
	homeEventHandler.clearInterval(this.homeId + "_" + this.sgmtId + "_loadStock");
	homeEventHandler.removeLocalStorage(this.homeId + "_" + this.sgmtId + "_stockInfo");
};

/** SHORTCUT SEGMENT */
var ShortcutSegment = function(request) {
	this.request = request;
	this.initOption = ["Aphone1", "Aphone5", "Aphone0", "Aphone2"];
	this.option = [];
	this.appInfo = {};
	this.appInfoLoaded = false;
	this.setSegmentType("shortcuts");
};

ShortcutSegment.prototype = new Segment();
ShortcutSegment.prototype.load = function(homeId, sgmtId, option, loadType) {
	this.setProperties(homeId, sgmtId, option);
	// exception handling
	if (this.option.toString() == "[object Object]") {
		this.setOption(null);
		this.request.getSegmentManager().setSegmentOption(homeId, sgmtId, this.option, true);
	}
	
	if (this.option.length > 0) {
		this.configShortcutSegment();
		this.getOptionShortcutInfo(loadType);
		this.setMovingAreaWidth(false);
		this.setIScroll();
	}
};
ShortcutSegment.prototype.configShortcutSegment = function() {
	var cloudHomeScreen = this.request,
		homeEventHandler = cloudHomeScreen.getEventHandler(),
		segmentManager = cloudHomeScreen.getSegmentManager(),
		homeId = this.homeId,
		sgmtId = this.sgmtId;
	
	jQuery(this.mainSelector + " .icon-delete").remove();
	jQuery(this.mainSelector + " .segment_cover").remove();		// remove segment_cover
	
	var currentItemCount = jQuery(this.mainSelector + " .shortcuts .item").size(),
		itemAdd = jQuery(this.mainSelector + " .shortcuts .item.add").size(),
		count = this.option.length;
	
	currentItemCount -= itemAdd;
	if (currentItemCount > count) {
		jQuery(this.mainSelector + " .shortcuts .item:gt(" + (count - 1) + ")").remove();
	} else if (count > currentItemCount) {
		if (itemAdd > 0) {
			for (var i=0, appendCount=count-currentItemCount ; i<appendCount ; ++i) {
				jQuery(this.mainSelector + " .shortcuts .item.add").before(this.getItem());
			}
		} else {
			for (var i=0, appendCount=count-currentItemCount ; i<appendCount ; ++i) {
				jQuery(this.mainSelector + " .shortcuts > div:first").append(this.getItem());
			}
		}
	}
	
	for (var i=0 ; i<count ; ++i) {
		var appId = this.option[i];
		
		jQuery(this.mainSelector + " .col_cut:eq(" + i + ")").attr("id", appId);
		
		if (jQuery(this.mainSelector + " .col_cut:eq(" + i + ") .icon-delete").size() == 0) {
			jQuery(this.mainSelector + " .col_cut:eq(" + i + ")").append("<div class=\"icon-delete\"></div>");
			jQuery(this.mainSelector + " .col_cut:eq(" + i + ") .icon-delete").unbind("click").bind("click", { optionId : this.option[i] }, function(event) {
				if (isMyEvent(event) && isLeftButtonClick(event)) {
					var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId),
						optionId = event.data.optionId;
					
					homeEventHandler.onSegmentItemDeleted(segmentObj, optionId);
				}
			}).hide();
		}
	}
	
	// hide item_cover
	jQuery(this.mainSelector + " .item_cover").hide();
	
	// set shortcut add button
	if (jQuery(this.mainSelector + " .shortcuts .add").size() == 0){
		jQuery(this.mainSelector + " .shortcuts > div:eq(0)").append("<li class=\"item col_cut add\"></li>");
		jQuery(this.mainSelector + " .shortcuts .add").css("cursor", "pointer").hide().unbind("click").bind("click", function(event) {
			if (isMyEvent(event) && isLeftButtonClick(event)) {
				var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId),
					hash = "optionSearch",
					actionParams = segmentObj;
				
				segmentObj.saveCurrentOption();
				cloudHomeScreen.setHash(hash, actionParams);
			}
		});
	}
};
ShortcutSegment.prototype.getItem = function() {
	var item = document.createElement("li"),
		innerHTML = "<figure>" +
						"<img>" +
					"</figure>" +
					"<p></p>" +
					"<div class=\"item_cover\"></div>";
	
	jQuery(item).addClass("item").addClass("col_cut").html(innerHTML);
	
	return item;
};
ShortcutSegment.prototype.replaceSpecialCharacter = function(string) {
	return string.replace(/(\.|\'|\-|\||\^| )/gi, '-');
};
ShortcutSegment.prototype.getOptionShortcutInfo = function(loadType) {
	var segmentObj = this,
		homeEventHandler = this.request.getEventHandler();
	
	if (navigator.onLine || true && (loadType != "cache")) {		// FIX_NAVI
		var url = "/aphone/chs/launchers",
			type = "POST",
			params = "appIds=" + encodeURIComponent(this.option.toString());
		
		if (chsConstants.workerExist) {
			var data = { url : url, type : type, data : params };
			homeEventHandler.executeWorker("getOptionShortcutInfo", data, function(xhr) {
				segmentObj.getOptionShortcutInfoCallback(xhr);
			});
		} else {
			jQuery.ajax({
				url : url,
				type : type,
				data : params,
				complete : function(xhr) {
					if (xhr.readyState == 4) {
						segmentObj.getOptionShortcutInfoCallback(xhr);
					}
				}
			});
		}
	} else {
		for (var i=0, count=this.option.length ; i<count ; ++i) {
			var appId = this.option[i],
				lsAppInfo = homeEventHandler.getLocalStorage("appInfo_" + appId);
			
			if (nvl(lsAppInfo) != "") {
				var appInfo = JSON.parse(lsAppInfo);
				this.appInfo[appId] = appInfo;
			} else {
				// set default application information
				if (appId == "Aphone1") {
					this.appInfo[appId] = {
						id : "Aphone1",
						value : {
							title : "Camera",
							url : "chrome-extension://ldmglakfmoecjhkbpkeegpgbklfflmka/camera.html",
							icon : "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"
						}
					};
				} else if (appId == "Aphone5") {
					this.appInfo[appId] = {
						id : "Aphone5",
						value : {
							title : "Clock Alarm",
							url : "http://localhost:8080/aphone/jsp/mc2/clockAlarms.jsp",
							icon : "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"
						}
					};
				} else if (appId == "Aphone0") {
					this.appInfo[appId] = {
						id : "Aphone0",
						value : {
							title : "Dialer",
							url : "chrome-extension://kdplcajnnmkhngacpekcokjeonpiklck/dialer.html",
							icon : "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"
						}
					};
				} else if (appId == "Aphone2") {
					this.appInfo[appId] = {
						id : "Aphone2",
						value : {
							title : "Settings",
							url : "chrome://mobilesettings",
							icon : "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"
						}
					};
				}
			}
		}
		this.displayShortcuts();
	}
};
ShortcutSegment.prototype.getOptionShortcutInfoCallback = function(xhr) {
	if (xhr.status == 200) {
		var result = checkAjaxResponse(xhr.responseText);
		if (nvl(result) != "") {
			var response = JSON.parse(result);
			if (response.message.code === 0) {
				var launchers = response.result.launchers;
				this.updateShortcutInfo(launchers, true);
				for (var i=0, count=launchers.length ; i<count ; ++i) {
					this.getAppIcon(launchers[i].app_id, "home");
				}
				
				this.displayShortcuts();
			}
		}
	}
};
ShortcutSegment.prototype.displayShortcuts = function() {
	for (var i=0, count=this.option.length ; i<count ; ++i) {
		var appId = this.option[i],
			appInfo = this.appInfo[appId];
		
		if (appInfo && appInfo.value) {
			jQuery(this.mainSelector + " .col_cut:eq(" + i + ")").attr("id", appId).addClass("col_cut");
			jQuery(this.mainSelector + " .col_cut:eq(" + i + ") p").html(appInfo.value.title);
			if (appInfo.value.icon) {
				jQuery(this.mainSelector + " .col_cut:eq(" + i + ") figure > img").attr("src", "data:image/png;base64," + appInfo.value.icon);
			}
			
			this.shortcutLink(appInfo.value.url, i);
		}
	}
};
ShortcutSegment.prototype.deleteOptions = function(optionList) {
	var segmentManager = this.request.getSegmentManager();
	
	for (var i=0, count=optionList.length ; i<count ; ++i) {
		this.deleteOption(optionList[i]);
	}
	
	segmentManager.setSegmentOption(this.homeId, this.sgmtId, this.option);		// update homeInfo
	segmentManager.updateSegmentOption(this.homeId, this.sgmtId);		// update segment option on DB
	// check the number of options
	if (this.option.length == 0) {
		segmentManager.deleteSegment(this.homeId, this.sgmtId);
	} else {
		// refresh iscroll
		this.setMovingAreaWidth(true);
		this.setIScroll(true, true);	
	}
};
ShortcutSegment.prototype.deleteOption = function(appId) {
	if (this.appInfo.hasOwnProperty(appId)) {
		this.appInfo[appId].useYn = false;
	}
	// delete option
	for (var i=0, count=this.option.length ; i<count ; ++i) {
		if (this.option[i] == appId) {
			this.option.splice(i, 1);
			this.request.getEventHandler().removeLocalStorage("appInfo_" + appId);
			break;
		}
	}
};
ShortcutSegment.prototype.shortcutLink = function(url, index) {
	var cloudHomeScreen = this.request,
		homeEventHandler = cloudHomeScreen.getEventHandler(),
		segmentManager = cloudHomeScreen.getSegmentManager(),
		homeId = this.homeId,
		sgmtId = this.sgmtId,
		eventType = chsConstants.tapReplaceEvent,
		customEvent = document.createEvent('MessageEvent'),
		dataInfo = {
			launchUrl : [{
				url : url
			}]
		},
		data = JSON.stringify(dataInfo);
	
	customEvent.initMessageEvent ("WebPageUrl", true, true, data, null, null, null, null);
	jQuery(this.mainSelector + " .item:eq(" + index + ") img").unbind(eventType).bind(eventType, { customEvent : customEvent }, function(event) {
		if (isMyEvent(event) && isLeftButtonClick(event)) {
			var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId),
				customEvent = event.data.customEvent,
				segmentScrollInfo = homeEventHandler.segmentScroll[homeId + sgmtId + "Section"];
			
			if (segmentScrollInfo && !segmentScrollInfo.isMove) {
				console.log(customEvent.data);
				window.dispatchEvent(customEvent);
			}
		}
	});
};
ShortcutSegment.prototype.initAppInfo = function(flag) {
	var segmentObj = this;
	
	this.appInfoLoaded = true;
	this.request.homeEventHandler.showStatusBar("Load App List...");
	jQuery.ajax({
		url : "/aphone/chs/launchers",
		type : "GET",
		complete : function(xhr) {
			if (xhr.readyState == 4) {
				if (xhr.status == 200) {
					var result = checkAjaxResponse(xhr.responseText);
					if (nvl(result) != "") {
						var response = JSON.parse(result);
						if (response.message.code == 0) {
							var launchers = response.result.launchers;
							if (launchers) {
								segmentObj.updateShortcutInfo(launchers, false);
								for (var i=0, count=launchers.length ; i<count ; ++i) {
									segmentObj.getAppIcon(launchers[i].app_id, "search");
								}
							} else {
								// error message
								console.error("NO LAUNCHER INFORMATION");
							}
						}
					}
					
					segmentObj.refreshAppInfoUseYn();
					if (flag) {
						segmentObj.showSearchList();
					}
				}
			}
		}
	});
};
ShortcutSegment.prototype.updateShortcutInfo = function(launchers, useYn) {
	if (launchers) {
		for (var i=0, count=launchers.length ; i<count ; ++i) {
			var appInfo = launchers[i],
				appItem = {
					id : nvl(appInfo.app_id),
					value : {
						title : nvl(appInfo.title),
						url : nvl(appInfo.url)
					},
					useYn : useYn
				};
			
			this.appInfo[appInfo.app_id] = appItem;
		}
	}
};
ShortcutSegment.prototype.getAppIcon = function(appId, loadTo) {
	var segmentObj = this,
		homeEventHandler = this.request.getEventHandler(),
		api = "/aphone/launcher/launcher/" + appId + "/icon",
		type = "GET";
	
	homeEventHandler.showStatusBar("Load Launcher Icon [" + appId + "]");
//	if (chsConstants.workerExist) {
//		var data = { url : api, type : type };
//		homeEventHandler.executeWorker("getAppIcon_" + appId, data, function(xhr) {
//			segmentObj.getAppIconCallback(xhr, api, appId, loadTo);
//		});
//	} else {
		jQuery.ajax({
			url : api,
			type : "GET",
			complete : function(xhr) {
				if (xhr.readyState == 4) {
					segmentObj.getAppIconCallback(xhr, api, appId, loadTo);
				}
			}
		});
//	}
};
ShortcutSegment.prototype.getAppIconCallback = function(xhr, api, appId, loadTo) {
	var homeEventHandler = this.request.getEventHandler();
	
	if (xhr.status == 200) {
		var result = checkAjaxResponse(xhr.responseText, api);
		if (nvl(result) != "") {
			var response = JSON.parse(result);
			if (response.message.code == 0) {
				var icon = response.result;
				this.setAppIcon(appId, icon);
				if (icon) {
					if (loadTo == "search") {
						jQuery("#searchList_iscroll img#" + appId).attr("src", "data:image/png;base64," + icon);
					} else if (loadTo == "home") {
						jQuery(this.mainSelector + " .col_cut#" + appId + " figure > img").attr("src", "data:image/png;base64," + icon);
						// save current appInfo into local storage
						homeEventHandler.setLocalStorage("appInfo_" + appId, JSON.stringify(this.appInfo[appId]));
					}
				}
			}
		}
		homeEventHandler.hideStatusBar();
	}
};
ShortcutSegment.prototype.setAppIcon = function(appId, icon) {
	if (this.appInfo.hasOwnProperty(appId) && this.appInfo[appId].value) {
		this.appInfo[appId].value.icon = icon;
	}
};
ShortcutSegment.prototype.getAppInfo = function() {
	return this.appInfo;
};
ShortcutSegment.prototype.showSearchList = function() {
	var homeEventHandler = this.request.getEventHandler(),
		list = {
			left : "icon",
			middle : 1,
			right : "checkbox",
			data : [],
			checkbox : {
				required : false,
				removable : false
			}
		};
	
	for (var appId in this.appInfo) {
		if (this.appInfo.hasOwnProperty(appId)) {
			var appInfo = this.appInfo[appId],
				data = {
					id : appId,
					line1 : appInfo.value.title,
					icon : appInfo.value.icon,
					checkbox : {
						id : appId,
						checked : appInfo.useYn
					}
				};
			
			list.data.push(data);
		}
	}
	list.data = selectionSort(list.data, "line1");
	
	homeEventHandler.getSearchList().setList(list);
	homeEventHandler.hideStatusBar();
	// refresh searchlist iscroll
	homeEventHandler.setVerticalIScroll("searchList_iscroll", false);
};
ShortcutSegment.prototype.refreshAppInfoUseYn = function() {
	// reset
	for (var appId in this.appInfo) {
		if (this.appInfo.hasOwnProperty(appId)) {
			this.appInfo[appId].useYn = false;
		}
	}
	// update
	for (var i=0, count=this.option.length ; i<count ; ++i) {
		var appId = this.option[i];
		if (this.appInfo.hasOwnProperty(appId)) {
			this.appInfo[appId].useYn = true;
		}
	}
};
ShortcutSegment.prototype.updateOption = function(checkboxInfo) {
	var newOption = [];
	
	if (checkboxInfo) {
		for (var i=0, count=checkboxInfo.length ; i<count ; ++i) {
			var info = checkboxInfo[i];
			
			if (this.appInfo.hasOwnProperty(info.id)) {
				this.appInfo[info.id].useYn = info.useYn;
			}
			if (info.useYn) {
				newOption.push(info.id);
			}
		}
		
		this.option = newOption;
	}
};
ShortcutSegment.prototype.startEditMode = function() {
	this.setMovingAreaWidth(true);
	this.setIScroll(true);
	
	jQuery(this.mainSelector + " .item_cover").show().css("height", 162 + "px");		// show item_cover
	// Set Segment Drag & Scroll Handler
	var segmentObj = this;
	if (chsConstants.isMobile) {
		var eventList = "taphold touchmove touchend touchcancel";
		jQuery(this.mainSelector).unbind(eventList).bind(eventList, { cloudHomeScreen : this.request }, function(event) {
			var cloudHomeScreen = event.data.cloudHomeScreen;
			cloudHomeScreen.getEventHandler().segmentDragHandler(event, this);
		});
	}
};
ShortcutSegment.prototype.finishEditMode = function() {
	this.setMovingAreaWidth(false);
	this.setIScroll();
	
	// hide item_cover
	jQuery(this.mainSelector + " .item_cover").hide();
};
ShortcutSegment.prototype.setMovingAreaWidth = function(include) {
	var itemCount = jQuery(this.mainSelector + " .shortcuts .col_cut").size();
	if (!include) {
		itemCount -= 1;
	}
	var areaWidth = 0;
	for (var i=0 ; i<itemCount ; ++i) {
		areaWidth += jQuery(this.mainSelector + " .shortcuts .col_cut:eq(" + i + ")").outerWidth(true);
	}
	jQuery(this.mainSelector + " .shortcuts > *:first").css("width", areaWidth + "px");
};
ShortcutSegment.prototype.setIScroll = function(disable, noMove) {
	try {
		var id = this.homeId + this.sgmtId + "Section";
		var options = { hScroll : true, vScroll : false, hScrollbar : true, vScrollbar : false, hideScrollbar : true, fadeScrollbar : true, desktopCompatibility : true, snap : true, momentum : false, hidden : true };
		var buttons = {
				prev : "#" + this.homeId + this.sgmtId + "_slidePrev",
				next : "#" + this.homeId + this.sgmtId + "_slideNext"
		};

		var homeEventHandler = this.request.getEventHandler();
		if (homeEventHandler.hasIScroll(id) && (jQuery(this.mainSelector + " .col_cut").size() > 0)) {
			homeEventHandler.refreshIScroll(id);
			
			if (disable) {
				homeEventHandler.disableIScroll(id);
				if (chsConstants.isMobile) {
					homeEventHandler.unbindIScroll(id, "mousemove mouseup");
				}
			} else {
				homeEventHandler.enableIScroll(id);
			}
			
			if (!noMove) {
				homeEventHandler.scrollToPage(id, 0, 0, 0);
			}
		} else {
			homeEventHandler.createIScroll(id, options, buttons);
		}
	} catch (e) {
		console.warn(e.message);
	}
};


var ContactSegment = function(request) {
	this.request = request;
	this.initOption = ["201109050002", "201109050011", "201109050015"];
	this.option = [];
	this.notificationGetCount = 0;
	this.notificationList = null;
	this.contactInfo = {};
	this.contactListLoaded = false;
	this.setSegmentType("contacts");
};

ContactSegment.prototype = new Segment();
ContactSegment.prototype.load = function(homeId, sgmtId, option, loadType) {
	this.setProperties(homeId, sgmtId, option);
	// exception handling
	if (this.option.toString() == "[object Object]") {
		this.setOption(null);
		this.request.getSegmentManager().setSegmentOption(homeId, sgmtId, this.option, true);
	}
	
	if (this.option.length > 0) {
		this.configContactSegment();
		this.getOptionContactInfo(loadType);
		this.setMovingAreaWidth(false);
		this.setIScroll();
	}
};
ContactSegment.prototype.configContactSegment = function() {
	var segmentObj = this,
		cloudHomeScreen = this.request,
		homeEventHandler = cloudHomeScreen.getEventHandler(),
		segmentManager = cloudHomeScreen.getSegmentManager(),
		homeId = this.homeId,
		sgmtId = this.sgmtId,
		eventType = chsConstants.tapReplaceEvent;
	
	jQuery(this.mainSelector + " .icon-delete").remove();
	jQuery(this.mainSelector + " .segment_cover").remove();		// delete segment_cover
	// add contact detail div
	if (jQuery(this.mainSelector + " .contact_detail").size() == 0) {
		jQuery(this.mainSelector + " .contacts").append(this.createContactDetail());
		jQuery(this.mainSelector + " .contact_detail .button_column p[type=close]").unbind(eventType).bind(eventType, function(event) {
			if (isMyEvent(event) && isLeftButtonClick(event)) {
				jQuery(segmentObj.mainSelector + " .contact_detail").fadeOut("fast");
			}
		});
	}
	
	var currentItemCount = jQuery(this.mainSelector + " .contacts .item").size(),
		itemAdd = jQuery(this.mainSelector + " .contacts .item.add").size(),
		count = this.option.length;
	
	currentItemCount -= itemAdd;
	if (currentItemCount > count) {
		jQuery(this.mainSelector + " .contacts .item:gt(" + (count-1) + ")").remove();
	} else if (count > currentItemCount) {
		if (itemAdd > 0) {
			for (var i=0, appendCount=count-currentItemCount ; i<appendCount ; ++i) {
				jQuery(this.mainSelector + " .contacts .item.add").before(this.getItem());
			}
		} else {
			for (var i=0, appendCount=count-currentItemCount ; i<appendCount ; ++i) {
				jQuery(this.mainSelector + " .contacts div:first").append(this.getItem());
			}
		}
	}
	
	for (var i=0 ; i<count ; ++i) {
		var contactId = this.option[i];
		jQuery(this.mainSelector + " .col_contact:eq(" + i + ")").attr("id", contactId);
		
		// add delete button
		if (jQuery(this.mainSelector + " .col_contact:eq(" + i + ") .icon-delete").size() == 0) {
			jQuery(this.mainSelector + " .col_contact:eq(" + i + ")").append("<div class=\"icon-delete\"></div>");
			jQuery(this.mainSelector + " .col_contact:eq(" + i + ") .icon-delete").unbind("click").bind("click", { optionId : contactId }, function(event) {
				if (isMyEvent(event) && isLeftButtonClick(event)) {
					var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId),
						optionId = event.data.optionId;
					
					homeEventHandler.onSegmentItemDeleted(segmentObj, optionId);
				}
			}).hide();
		}
		
		jQuery(this.mainSelector + " .col_contact:eq(" + i + ") .item_cover").unbind(eventType).bind(eventType, { contactId : contactId }, function(event) {
			if (isMyEvent(event) && isLeftButtonClick(event)) {
				var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId),
					contactId = event.data.contactId,
					segmentScrollInfo = homeEventHandler.segmentScroll[homeId + sgmtId + "Section"];
				
				if (segmentScrollInfo && !segmentScrollInfo.isMove) {
					segmentObj.showContactDetail(contactId);
				}
			}
		});
	}
	
	// set shortcut add button
	if (jQuery(this.mainSelector + " .contacts .add").size() == 0) {
		jQuery(this.mainSelector + " .contacts > div:eq(0)").append("<li class=\"item col_contact add\"></li>");
	}
	jQuery(this.mainSelector + " .add").hide().unbind("click").bind("click", function(event) {
		if (isMyEvent(event) && isLeftButtonClick(event)) {
			var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId),
				hash = "optionSearch",
				actionParams = segmentObj;
			
			segmentObj.saveCurrentOption();
			cloudHomeScreen.setHash(hash, actionParams);
		}
	});
	
	jQuery(this.mainSelector + " .contact_detail").hide();
	jQuery(this.mainSelector + " .contacts .notification").hide();
};
ContactSegment.prototype.getItem = function() {
	var item = document.createElement("li"),
		innerHTML = "<figure>" +
						"<img>" +
					"</figure>" +
					"<p class=\"name\"></p>" +
					"<span class=\"notification\"></span>" +
					"<div class=\"item_cover\"></div>";
	
	jQuery(item).addClass("item").addClass("col_contact").html(innerHTML);
	
	return item;
};
ContactSegment.prototype.createContactDetail = function() {
	var innerHTML = "<div class=\"contact_detail\">" +
						"<div class=\"screen\">" +
							"<div class=\"col_contact\">" +
								"<figure>" +
									"<img>" +
								"</figure>" +
								"<p class=\"name\"></p>" +
							"</div>" +
							"<div class=\"details\">" +
								"<div class=\"noti_column\">" +
									"<p>" +
										"<span class=\"notification\"></span>" +
									"</p>" +
									"<p>" +
										"<span class=\"notification\"></span>" +
									"</p>" +
								"</div>" +
								"<div class=\"button_column\">" +
									"<p type=\"close\"></p>" +
									"<p type=\"call\">" +
										"<button type=\"button\" class=\"btn\">call</button>" +
									"</p>" +
									"<p type=\"message\">" +
										"<button type=\"button\" class=\"btn\">message</button>" +
									"</p>" +
								"</div>" +
							"</div>" +
						"</div>" +
					"</div>";
	
	return innerHTML;
};
ContactSegment.prototype.showContactDetail = function(contactId) {
	var itemInfo = this.contactInfo[contactId];
	
	if (itemInfo && itemInfo.value) {
		jQuery(this.mainSelector + " .contact_detail .col_contact img").attr("src", "data:image/png;base64," + itemInfo.value.picture);
		jQuery(this.mainSelector + " .contact_detail .name").html(itemInfo.value.name);
		if (itemInfo.value.phone) {
			/** 2012.01.31, open dialer by MessageEvent */
			var customEvent = document.createEvent('MessageEvent'),
				dataInfo = { launchUrl : [{ url : "chrome-extension://kdplcajnnmkhngacpekcokjeonpiklck/dialer.html" }] },
				data = JSON.stringify(dataInfo);
			
			customEvent.initMessageEvent ("WebPageUrl", true, true, data, null, null, null, null);
			jQuery(this.mainSelector + " .contact_detail .button_column p[type=call] button").unbind("click").bind("click", { customEvent : customEvent }, function(event) {
				var customEvent = event.data.customEvent;
				
				window.dispatchEvent(customEvent);
			});
			
			/** 2012.01.19, changed for offline mode */
			var messageURL = "http://" + location.host + "/aphone/message",
				whichPageInfo = { "MODE" : "compose" };
			if (itemInfo.value.phone.mobile) {
				whichPageInfo["ADDRESS"] = itemInfo.value.phone.mobile.replace(/\-/gi, "");
			}
			localStorage.setItem("whichPageInfo", JSON.stringify(whichPageInfo));
			jQuery(this.mainSelector + " .contact_detail .button_column p[type=message] button").unbind("click").bind("click", { cloudHomeScreen : this.request, url : messageURL }, this.openNotification);
		}
		this.configContactDetailNotification(itemInfo);
		
		jQuery(this.mainSelector + " .contact_detail").fadeIn("fast");
	}
};
ContactSegment.prototype.configContactDetailNotification = function(itemInfo) {
	var cloudHomeScreen = this.request,
		segmentObj = this,
		fbNotiIcon = this.mainSelector + " .contact_detail .noti_column p:eq(0) .notification",
		gmNotiIcon = this.mainSelector + " .contact_detail .noti_column p:eq(1) .notification";
	
	if (this.notificationList) {
		var notification = this.notificationList[itemInfo.id];
		// facebook
		if (notification.facebookLink) {
			jQuery(fbNotiIcon).html(notification.facebookLink.length);
			if (notification.facebookLink.length > 0) {
				jQuery(fbNotiIcon).show().unbind("click").bind("click", { url : notification.facebookLink[0] }, function(event) {
					var url = event.data.url;
					
					if (url && (url != "")) {
						// change notification count
						segmentObj.notificationList[itemInfo.id].facebookLink.splice(0, 1);
						segmentObj.configContactDetailNotification(itemInfo);
						// open facebook page
						var childWindow = cloudHomeScreen.getEventHandler().openLink(url);
						jQuery(childWindow).ready(function() {
							segmentObj.getNotifications();
						});
					}
				});
			} else {
				jQuery(fbNotiIcon).hide();
			}
		}
		// gmail
		if (notification.gmailLink) {
			jQuery(gmNotiIcon).html(notification.gmailLink.length);
			if (notification.gmailLink.length > 0) {
				jQuery(gmNotiIcon).show().unbind("click").bind("click", { url : notification.gmailLink[0] }, function(event) {
					var url = event.data.url;
					if (url && (url != "")) {
						// change notification count
						segmentObj.notificationList[itemInfo.id].gmailLink.splice(0, 1);
						segmentObj.configContactDetailNotification(itemInfo);
						// open gmail page
						var childWindow = cloudHomeScreen.getEventHandler().openLink(url);
						jQuery(childWindow).ready(function() {
							segmentObj.getNotifications();
						});
					}
				});
			} else {
				jQuery(gmNotiIcon).hide();
			}
		}
	}
};
ContactSegment.prototype.openNotification = function(event) {
	var cloudHomeScreen = event.data.cloudHomeScreen,
		url = event.data.url;
	
	if (url && (url != "")) {
		cloudHomeScreen.getEventHandler().openLink(url);
	}
};
ContactSegment.prototype.getOptionContactInfo = function(loadType) {
	var segmentObj = this,
		homeEventHandler = this.request.getEventHandler();
	
	if (navigator.onLine || true && (loadType != "cache")) {		// FIX_NAVI
		pu.startMilestone("load data, contact info, server db");
		// contactInfo, except picture
		var url = "/aphone/chs/contacts",
			type = "POST",
			params = "contactIds=" + encodeURIComponent(this.option.toString());
		
		if (chsConstants.workerExist) {
			var data = { url : url, type : type, data : params };
			homeEventHandler.executeWorker("getOptionContactInfo", data, function(xhr) {
				segmentObj.getOptionContactInfoCallback(xhr);
			});
		} else {
			jQuery.ajax({
				url : url,
				type : type,
				data : params,
				complete : function(xhr) {
					if (xhr.readyState == 4) {
						segmentObj.getOptionContactInfoCallback(xhr);
					}
				}
			});
		}
	} else {
		for (var i=0, count=this.option.length ; i<count ; ++i) {
			var contactId = this.option[i],
				lsContactInfo = homeEventHandler.getLocalStorage("contactInfo_" + contactId);
			
			if (nvl(lsContactInfo) != "") {
				var contactInfo = JSON.parse(lsContactInfo);
				this.contactInfo[contactId] = contactInfo;
			} else {
				// set default contact information
				if (contactId == "201109050002") {
					this.contactInfo[contactId] = {
						id : "201109050002",
						value : {
							name : "Ku Ha ra",
							picture : "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",
							mails : { work : "", home : "", other : "", mobile : "" },
							phone : { work : "", home : "", other : "", mobile : "01022222222" },
							sns : {} 
						}
					};
				} else if (contactId == "201109050011") {
					this.contactInfo[contactId] = {
						id : "201109050011",
						value : {
							name : "Lee Min jeoung",
							picture : "/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCADrAMMDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9vKM0rDae9NX7xNc4C01+tOpGXOTzxQAyignA7k0FgOp/DvQAEZGPWoz39ae7gKTnJFVpWJG3dz7nFJthckcE470BTwDUHLJncVA70v3sMSapK+4D2bacUbx681DPcLb8sR+Jx/n8qjXUomQuCrKfuncMfWlcCwcge9HWqhvo9xJcjHapA4kXcGyD6VVla4ErnAHPNMBxzSRYyRk5pzADIzz9akCOeJZoyrjcD61HHGqKqgEbe3apwNoxSY7+lAER+/SuM49TSlfmzR1oAYQRwaSlbO40lADX600jPBp7KSc5ppGD1zQBGwwSKKVlySc0UAdKxH40wcU8pnnnmmsMHFACUMcKT6UGmtJxjP40AV5NwBO7PPIrF8SeMrPw1atNcs52rvO1Sxx6+n51V+JfxI074b6cbm+uIoQ672MjbVVe5J7Cvn3xp+358J/A80914s8ceHFtUUvBEl0shkIyQCB1YdhjrUykluG52vj/APazufDdh9qt/D+oCwG7bPcDyw+B1we3pivJfGn/AAVy8NfDrw1cT+JNH1PR72NS0ETIDHdDOAVPUHvggcV8Pftrf8FeLv416jeJ8MVlsLCKMpFqE8ixyBjxvVSMAY7dutfBvxV/axfSNo8WaxqnibUxuVke4MylDjh2Y5z1A7Vzym2axgl8R+xnwW/4OHfhX8VPH9j4Z1C11DQr26uDbefKFe2U5wCzDp1r6T+N/wC2z4P+DmjGe4161vZHQSKI5Ase0jIO4/pX8tsn7VKWuuNPpum22nQq3CRIMlR2L9c1T8SftaeM/Gmoh31K6mjt/kCPM7AJ2HJ6AURnJCqJJ6H6xft0/wDBbDxb4+u5IPAl9caVoViSsp6SXTj/AGhztr4cP/BUH40eHPEtzqul+OfEVtcOcSpHcMYl54+RsqAPpXzBrvxJ17X8xzXUxij+dEzuUDv0rR8B+OYdPlQ3ETJcgENlQyzD8f60nJjgovc/T79jf/g4q8d+HRb6b4+EPjOwMyiW4dFgvrVABn7gww5PNfpx8IP+Ck/gH4oadYajpWqu1tforFHcBYsjufbp0r+ZrWbOGG5XUrWPYS27dGflB9MV2/gj4k3c+niSwvZrOWD94UikZN3rwDVxlbdg4dj+q3wd8WtE8aWkUllqNpM7DlVfJ/ziunFwjYwcg9DX83v7P/8AwUJ8ffCWygvbHXpL21tJQfJncmQYHKkjtX6//wDBOr/govp37Xfw/hluZIrDXtPPl3tq77jjHDKehFONUzaa3PscHcCM8jpQzcYzyap2eorf26yL8wYDafXI4PFWvKzGNwJI/Kt7iuFFOxjBzkmmgkk5oAD0Peo6kY4Hfmo6AEcEj6UypKRxxnvQBHtzzRS0UAdGScgVGXwTnNPXJbJ5xSeXwSetACA5HXrVHUNRgsLd5Lh1ijTli5CgD1JPFXQ3zAH0z7V+fv8AwXV/bf0L4NfAq8+Hlrr1za+LdeEcki2ZUPaWucuzsSMFh0AyT6CplKyuNJvRHjX/AAcL/wDBQOw+FnwvsPC/hTU4LvU/Ecjw3jW1yrNbRAD0PGTzX4jaXH4t+KjmdY7i7SKbG12G0e5Peux1aCHx54ohezt7nWGncsJr+Zm3Y78ngfjW3rvjC++HuhPb6bpkiIeJLhYcRg4/hPfFcrnzM6qdNR1e5ieN4h8OPBsEN5rA/tBiA9tH8wj4656Zrw7xJr0WtX7ShHmdmP7yRslq3/FWqpr08s9/JftdyndyUxnPoTWG9ks9uBBOruOqsu1loKbuZIMjsB5UZzx9zipJdNR2DNtRgP4FINWRYyWUwMtwGA7bgQK6Tw5rNtEw3WovXPYthaLmbhzHNafYsFURyXBYHj5TivSPA/he61u1ZZFjuMcIWgww/wA+tdD4Q1VtYuY0+w2cat0ihi3Px6noK9o8AfCe68RyBYYVihY4+T7xOOlc9bERpq7ZrRwkpuyR5toXwtMNukUEDTuRll5YH1r0X4ffsdah4pvo5Y9NnSOUDDRrymfUelfW37Of7G9uz2895bSwytyNwJJB9RX2/wDB39l/TtM06No7MMAvJ2jdj8q8TEZo7vlPdoZWlrI/K+//AOCcuv6bYSXOnswnIy0TZAkGPSo/gZ4g+If7H/xHt7wWVzHZOpSSdASEXHO7HYV+zMfwG03y1jaBSoHXHSuX8afso6Lq9rKjWaP5uQQVB3Z7VyUc0nGXvI6a2VUpx91noH7Af7XGm/Hr4Z2nnX1sL+2WK3RWcK1yAgJYD6V9JJdngDkMOtfkz4o+C3iX9hvx3J4t8LRm78Iy/LqFkULGxUnl0HUrjgkHIr7u/ZN/aHg+KfhfT7m0v49Ss71S8LAklCOqn88YPcV9VgsbGtE+XxmDnQlrse9N1HtTcEdc0LOGAIJ+YZGadJ2NegcZGyk45ppUj3p+7nHOaKAI6DyDRSMcD3NADKKdvNFAHQKQuRmkeXAOAWxTmUk5qN4zuJz1prVgQtcfuycYZeOe9fz5f8F9/glrOsf8FB/ETSXsg0y8tYLwtNI21FZABGg5BJ2npxzj2r9wv2vv2jdN/ZL+APiLx/qttJfWnh22Nx9ljbD3D5ARMnsWIBr+av8Aa7/bq8XftcfHO/8AGfiKeRbuaYfZIE+W3tEXJ8sDuFXH1bnrXNiZdEb0I3dyt4J8E6P8KIBNrGoWVp5ClRHcTeXkHPJH3unoK8w+On7Sdjr0v2SGa41e3gBjU7BHD/wHPXHrXHWdjc+OvEtxd6nNNdBpCXJJIc5ztyRz+AqL4iy6XoqiC107F7jlyuAOPc8flWEI8qN5O7ucJqmp3OsStL5YhDHKjHQenNVraJkyzzkEc8tmn39zJckmSbbt/hGMCqaB2kypU+w5zVklpYHuJ84BXuTXceBPD51G9RYx5j8cYwBXI6VH5kyxkOzn0617B8LdIezVZHlEEb8MwALH2FZVJtLQ1prU9d+D/wAOk+0QWlnG13fSMI3lxgBu4A9B619z/Ab4Pw+F7a1fyklulXLNtGIzXgn7Lekw2tvbPbwA3UyhI93zMmT1JHrX3D8Jfh3KmjpCTJJO6YJPbPWvlsfWbbR9Tl9OMVsd/wDBbShfXqFIsxRn5n7v7V9QeErZGghVQQCBwOAteTfDbwQmg28EIABVe/WvWfDErWaomCVXvXDSaukzsxPw3Onu9DGwNtLcY4681i3dqfOZT8oXoD3rprS+8+HIbIIxgjmsjXoRFMZAuN/euqrTildHDRm02jlPGOgw63p7xTxRSxSIY5EcAhweo59a+b/htorfsf8A7QyNp8hTwn4llDmEkhYZN2NqD+HGePb1r6h1o+ZbFeuRgD1rxX9pPwmdZ8Az3SKTc6Oy3sJxyChyRx2Iz+dbYCq6VVCzGj7Sjc+ydMnD2cUiNlZFDcc4yM/lV37wAyea5T4MayfEfwm8P3u4N9qsYpM9zla6xBhR3Nfa05c0LnxMk07DWGCKSnuuefSmVYhjDBxTHJJI9KlcE8+lRFSTmgBQvA6flRS0UAdBUU5LHHpTzJs5NRm4LZAIJJ9Kd7PUDwT/AIKX+EdM8Z/sRfEWy1e2jvrQ6PNKI26+agLKwPbnbiv5xfDvwI0/WvDUep6rfxxpENxXdtRQTnaW9QDjFf1D/GTwjbePvhlrWjX+37LqNq8EmRkFSpH9RX8737YPwusf2f8ARbnw/Ppl6XS4ljmR8hM7jg/iMGuWtC8rm9Kdo8p80/E/X9C8H7U8OXbm8t49m6FQUI9ien1r588T6leaxqU00j/O7EszclvrXe+LtUhubuVEHlqMAQxkEgfhXH6hp0ToxcmLJ6seKg0vpc5YRBWbO6Rz26CrVvYTSDH3M+npVya2giIMZDsO4PBqKJ/s03zSFmboq84ouO50PhG3g0jdJM6xqo5bqzH+lej+BrhL+7jZELCQ/IpPLfhXl3hjQbrxPqqIgZk3ABezH0r7h/Yu/ZFXWL+G91NBJKxUxRlcgZrixuJjSgdmCoOrOyPY/wBj/wACai1nbTyxOok2hOMFuegHpX6A/BvRJNIsY2unBmYDjsPSvP8A4QfCaz8I2NqAA8sKjJwMfT8K7291eWwt2aFGDqfzr43EV5VJNn2+Hw0YQVz2bTdQtLeyWaaZYtgBJJHHtWfq37UPhbwHgXV+hwc8HOTXhcOk+JviHq0cc0z21oMtjdtDfWvUfAn7Kvhi8s2fVrU6vdPj75IRPYVph+W95M566bemxo2v/BSD4aWNz5V1rCKc4bHJB/Cuk079r3wV8QbZG0rVYrtHbHGQVI7YryD4jfsKeBZb+a7tdIhtZnHzBDWN4B/Zs0nwXqBawV41LfMvrXRWxNO3KjClhGnzs+mLLVV1eCOZXIjYdBXIfEnxNpWjW8trfTqkV0jI2444IxWzpLLpukxxjOFTn0r5z/ax8FXXxS822tL2SCULhdrHrWdOpFSTbOitC8OVH3H+zfqGn3nwV0EaZeRX1pbQeQkyNuBKnGPYiu6R2U4bvXw1/wAEd/Bfi34KXXjDwn4ju5L7TdQddS05y5ZYG+66jPTIwfwr7mAyACckV9xg60Z0bxZ+fYqDhVcWiQ9DUdSH7pqOuswA88etMIwepp56Go85oAWikooA3ihdSHJb+lMeLYwILDHvT34wfWmPJ5fJ5JoAzfEYLWbxfKWk+VQVyD9a/Hj/AIOBfgX4dvvHsUmnarDFrupaab28sFchk8vCCTA4ww4xweK/Y/VLVry22csc5HOCK/Dz/gsxpdhaftG+Lv7T1VU1loRFiR5CsMD4eMEr9MCs6krBd3PyH1XQLnRdWmilu4HMbYOw5/OsjULYKGDu8hHJ9PwrufiJYy6TKQBayxE482JRlgen3uSa+nv2b/8AgktH8SPhpaeJ/Hniq68LWuqx+baWttbpJKqn7ryF+5H8KiuHFYuFNXk7HfhMBVxLtT1sfCdzlHAwqqx4J5x9asaRpaTSEMwLE8sDXuf7WH7Bnij9m7xLItvN/wAJP4flO601O0i3CRf9tRwpHevJ/DPhW5W6KrazSyRnuhVR7n6VMMVTnHmizaeX1qUrTR7R+z74VsbG9gPkrNICDg96/S39kTwcEtFu3QGcgBQB8sQ7AV8F/s0+BXg1Wxe8JZhh22j5V5469a/TD9mWCJNBjMY6Y5A4FfOZvW0Pocno+9sewaXpptYt5jbcFxnFbWnacroS0Ycn+9T9Lt1liQMSzMM12Ph/w/DqMJAGHIxnHFfPQr8zsfRVIs888UeOtM8AQSXN5cR28MfVnbaqgc14X43/AOCyPg74daqtjZXBvZJJRCJIwZAWJxt4717N+0X+xrp/xktntL6S9eGb5WMbkYGOw6V4w3/BKL4Y6b4fGl6jp13JbRyCQZUrIX/vbgc5ruocileRFVpw5YaHKa5/wVw1l/Gurafd+Gr9E0QxyX7IokFrFJ9xmKkgZH+RX1J8J/i1YfEfRLHWLOZZbW7hEu8EEc/T3rwLwf8A8E8/Anwmu9ej8K6hqumw+KoRbahAcTGRB/CN+SM+oNe6/spfst2/wS+G8fh+3nv7y3Ds1vJeECSNWOcY7gdqjFQg5c1Mmi5cnLUPeruCObwS1zbhXVI87h16V89ar4+0PwRZ3mueIr610+1MxRXuJAi57AA859q+hvhYgTSbnSLkeYQCqE8ZGa/Nn/gp3+x58VfHXj7XoNE/4Rm70G5gWCxt72QrLaoG3MY+yuzfx9ccZxWtOjGqkpOxze0lSbsrs+5v2Cf2nfCPxY+Jmp2+k6lb3Mlla7TsYc8gV9ixEvhs8d8cg8V+Vv8AwSw/Zxfwt8Zre6m03WdOvLbw7aWV7ts1W3kuI3JeQuGwecDIHNfqZYIUiRWYnaoGegJr7PKaUY0vdZ8Tm0m615KzJixPc0lKwwcUjZ2mvVPLEc4HuaZTic4yecU3d70AFFNZ8EjNFAHQMcn1xTQgJLHPFSHgGo/4cHmgBjkhsj86/M3/AILbfsQQeLG1H4m28cptm08QasImJMXl58uQr3Hbiv0xkUMpGTmuF/aF+Hln8Uvgv4o0C9txcw6tps9uUA+YsUIB/A4/KplHmQH8iTW403xxEWjkaFbxMhJCwZQ/Q5/Wv2q8K/D+38aeJdAjuFLWaaLFNHFyFQMi446da/H34v8Ahp9A1/V7Xm3uNHvZbd4m+Vy0blSx98iv2D/YO8fJ8Wvg74d1qCVWvR4bhhJY870bY31wcV8jxBTbSZ91wpWS5jzP49+Bo/DXjh7O6uI3sJ8wpabAxORnJHQflXiXin9mbTrFjcwwW8SPGXchcYHfP6V9D/tR/DW/8KeLF1m5vFeS2Ky3Lk5HXO0D1xXGfFzSE8P/AAJGrmZzd6pbfaZE3ZAB+6B7nI4rw6FWcZpR2PpMdRg6Tk9WfL/wkke68YMEwFMhVR2VQSK/Qn9m+EWugQ5O1Fx+NfCfwZ8Itp11bXJDbrn94w7cnNfZHwj8UPY6ZHCx2lew6Vpmk+a1jzcro8t20fTOhXglSMB+lejeC71RIi7vlPBArwnwbr7XdumGOR6V6T4Y1/7K8ZzyeTXiR0Z6/JeJ7ppFjb3yAlckDj/GtOTwhb3MYLwCUkdSucVxPg7xUSEXduyO/avUNE8SW5sfnwcjua9vDRTR4uJjKEtDlH8EWEU4228SEHptwatXWn21rYtMqIGRcAY6Va1vUIpGZo2wScc+lcD8TfiX/wAI3pXkQspmnO1ea1k4Q3DDwqVXYpnXItC1ppo3J3tjgjgVZ+JPgPT/AIr6fHJKWWQoMOrEMp+orzzTdHv9ZP2nzWlEbZPQDHWvSPA3ifS10Wa3ubki5XgDPQ9q56clJ8vQ9DEYd00mtyT9kn4YN8OfG+oJNdG5aS3McJYY2jOSPfj+VfQkb7pWB6ivDtA8TiKS1vo3PmRvgt7Drmvb7S4F1bxSgZEigg56ivrclrLkcD4TPaMlUU5dSR+TUa/eNTEdT7VH6mvePBI5+oqOpJgSR1NJj5feqVgGFc8miiindAdIehqOpG6GmI6+vIqAIpHK5PUiqV60ghkULyykZJ6VcI8xjyaq6pN5FlLISqqq5Zj0Ara+lgP5Vv8Ago3pR0b9s34jqlsbeFtduiExwMyHt+te5/8ABGb9pB9I1G88DXN9GL+2ka40yOVtq3MT8yRDPfjIFUf+C93wCvfgz+3prt7DDNHp/i+NdRgLD5S+MSAe+QD+NfBdh4x1L4f+MLTU9NuJrHUrCZZo5UPz7geDmvDzHDe2g4Ht5Ri3h6il0P3j+JbWnxdtNU0q+thZ6mV3Reb8w3Y6H2PTNfK/izSNVstIj8G39xHcyWErS5Vyy4J2xp+HJ/AVo/s9/t/Wvxd+FNvfeIkEGuW9oiSXkQGZscDd6MT2rrPhv8MH8eW11r93Mr6hfTh0ZWBDKPTnpgAZ6E18XyOlLXoforrwr0lyHD+G/BqW+vwxpGBDZIkRP95go/8Ar17N4N00wxudoDNwBjpXMTaVHDrsqZwyvkk9jjmu18NsYIwSS27qaxrS59x0qXKrHoHw6lNvKquep6V6VpmUjVsFjXlXg7K3IOTzyPWvU/DU7XNuBnHavMtyy0NY6HZeEteMWFLk7fu5PSu40vxUyxLlhwOQTzXl1raH7QwQnj8K6HT5nVEUltxGK7qFSyMKsFLc7LU/ErzqFjyXY4GORXGfHH4ReIdf0jTNQ0ZUuLq0z50BbaXB9PetLR9ZjsL1ZHYMEOOThc12dp8SbKO3XfcwID3LhR9MnvXXG1R2Zyrnpy5oHyD8a/AfxeudGM9vr0nhLToUx9ntYVe4mPqznP5DFcz+zRr3ji2hlsdd1pNdu0lfFx5PlsqD+8e5r68+JvxJ8M32mvbz6hbSM/ACDc2fx4xXkmm3XhmwvmFpPGtzLkBQhCvn19zzRUhy25TuUqko3mj0fw5rZh0W2jLlnxg5/iJ5r6k8Kl18N2SuMOsKE/lXy58AvCE3jnxna25RjbWWLiY/whR/D9TX1dH+7ARRhVAAA9K+kyOk1FyfU+D4jrxlNQXQmpr9acOTjvTXxkAnk19MfMDaKU4BIJ5FMZsjjOaTYNiNwTRTWfBIopgdA5I49ahlBzxk1LJ2pu0kkjuMU7gRoNuPWqup232u0kjPRxjB71dERBye1NeMlcdcUSfvX6Afjr/wc5fD5df8DeDdaa23S2cpjnlGcxEjbnPYEgV+HXirTDBMI0Y+YTwp57+vrX9S3/BVz9k+L9qH4HajpGMXU9nL9lYAcTod8Y/MGv5xviz8Gb7wX411DTNT06e01GydoJUK4dXB64PGD6iuatu2dWHsX/2WFuoLi10tpyoupRKwJyy8dTX6HfDua/0m10KSG4kt9OiUxQwAYU4IyT6kZNfnB8IHuvAvjm1d1lV2deJB8zj0xX6MfCjxPLr/AIOt4CUe1crOg2/PbS7cMueykDOPWvis1i1JNI+8yOp7ijc6bxNbtB4meQAlZfm9Rzzmt/w3cgqVb+IcCsfU43voy5JZkUAdjxVjw38wUuWGDivJk7bn1MKalG56P4bHkSxEMeeeDXpXg67byUPPJxXlegzLHGNrbiMGvQPCWp7VVST2NcUl71xTp2R6VZFflfrxg1tvEILV5E5bAI5rldKvh5aZyd35V1VhceZabONzDAzXTBJM4K2iPgH9pD/gq5pXwf8AjLrHhLULLXdPfS5Ps810LUyAngkquRkc9a5vwR/wVP8Ag74kn08eLvFvjO0iubgi6U2bxxQRgcMSoPB9a+q/2rv2KfA37SeLjX7KODVo08uO/jQb2GPutjr+Nfn/APHL/gjz4i8LXYvNEEmq6FK2NqrvKjPA45/OvdwypWTaCOEq1Y/u2fePw6+LP7KXxm8JSvoPxW0tJ5rnCNPqRt7kL6bXxx70tp4Dsrv442yeEvEH9teFbO382S4S4E8bTZ+4rDqAMfrX5D+NP+Cfviz4T/EXSzZeH9UvrC9kUM62xcWzbyGVuOPrX7O/8Evvgm2mfDrQtCa1eAxtvnRlwQg5J/HpWmI5ZtU6SMKmHxWFoyq1noj7M/Zq+H48EeA0nkUi81VhLJuGGVMYVfy5r0U8Yyec0yKFYljVMYQbR2AAGMUrEh+9fV4LDqFJRPy7F4h1arkyTdg5GTUbuSwODx+dKX2Dnp3PavOvi18c4/BOt22iWEaXerTjzJQx+W2Qnjd7nritauIVNXY8Php1pcsEegFixY5JOfwoicrncOSaw/hx4gm8S+G1u7lkklMrpuRdqkKRyPaugiJYEnt0qqdVTSZlVpuE3FkbAMxOetFSEH2orQg3GBbHNKowMUifdFLQAj/dNM68dc09/ummUAc/418NL4gsFRlDMjbhxz0xX50/8FB/+CaelfFvxFNrK6Zi7kGGnjQKVI4yR3OO9fpeykHOeTWXq+k219C4uYUmViflI45qZRuilJp3R/O/8Vv+Ced38Nr37cyXMqwSBY5Qcq3PA616L8PNMk8K6TYX5WRIpECXCDsQCCT9K/VP9rv9mLS/Gnwx1ErYIt7ZRNKhi+UBlBJ4HXtX5w6vpkUfgW+t0dS8Ss6nOCDycH69MV81m9LlSbPq+H6zlNmzGN8KSRjzEI3hh3B7VJaIN+4HGDyCOlO8OWjQ6VGoHSNCf9kkHIqWW0IfdjGeoHevjq8mfouEaaszUtL94Cm1setdz4X1fDKC2crXnMMhjUEkZHHNbXh7XBBJgyYI/KuZyOmpSue5aBctLBESxIHP0FdnpwMtvGVJYmvJvCnjCKRI0Ei7lHfoa7zwl4uRLkI8in0zW1Jq55FeEo6WNzW9Je9syCC56fdrzfUYdW8H3Lz6bcSDefmgZvkf6jvXuelzW+oW4jYKeM5zVfxD8LbDXbMyNgOPQ84r1KU21Y58NjJ0ZaHztL8SJ7+9YSWUkUrHJXHydf8AHmvq79iPRIND8KTXl6Y4tR1J8xRscMqDJwM9c+1eR3XwTstP1ESbi5ZuBnpX1Zpnw801/COl28sC7rWBSki5V4zjOQR3zXtZPSU6jbWx5PFedValFUb6M6vdkBQAOMDFJKmO+SKyvDDXiRvBdkSPbvsWTruTt+Natw+AD3r63Zqx+c21uc/8S/G8Hw48Aaxr10cxaTavOVzgOwB2jPucCvk34X3l/wCLZr3xLqUpm1DVZTO2c5UnBVR7AcCvU/8Agoh4nNh8DrXQY2ZZfFWpR2m1erRoPMkH04UH61y37NPgFrO70WGRnmieQbg2SMKNw/UV8rmlaVTEqknofcZNCNDBSrtan0j4L0hdD8J6fahQpiiG5cYwSMt+tacRyDnNDfKWOeT+X4UR5GQTk19JQjaCj2Pi8RUc6jkx2KKKK2MzcAwMUUZ45o3D1oAa7YGM00HPPWmuu5iT2oD44oAjmbCg55qu6Ycs/KA+lWJYwU3HODxVeeRY0AJJJ6Ck3pcGzlviiY7b4fazPcH5VtXy3ruBr8kfFPw80y78VuxikkSKVmEZkKxn5uMqODjqM1+lP7bHxQh8IfDaTSY5cXeorlhn5lQdyO2a/O8XJn1aR2O7cx5xXxuf4vaKPs+F8O7OTW5oWmnKtgiKm1l646mm3WkskmTtIUdO9bmhWOYUYkkscc1PPp3nOT3X24NfLQTk9T7BzcNjjLyzCqcnFUDp52krIVYc5ro9XsT5cg2n61lw2IDlHzn1zWroI6IYuVg0zxLNpbhZcgAYD10Vp8Rj5ayLKSUA+6a5TVo8rtP8PFcpqOonSQTFIRLIQoA5HWhYe+x0OtFw5pI+nvAfx1i8hY53dSvGea7TSvjzawOUeclW6HPNd/8ABD9inwF8Q/gd4Y1e/wBPuF1G9sVlnliumQu2euOldbpP7APw1tpNzWeoXbD+GS+bH6Yr38LlFaydz5PEZ9g4tq2p518PtVuPir42sNNsR5xZw8zrysSA8k+x9a+sPKVEVF6KAAPpisfwJ8M9E+GOmfYtC02206A43eUPnkx/eY8mt7YRn2r6bL8H7BNnxeaY76zUvHYZHahJC2OWpZ0xHk5x7daezHd1PFMkG5DkkkV6TZ5iep8hft96wNQ+P3grSZN7w2mnSXJAPyq8kpGSPXCYr0P4U61Fouq6LAgDNJKqKenBGDXmf7UsK+Iv22Ibc/MbHSrZcEeu5sf+PV6v8NtHjHjjSI2A/c5ZcDAU7a+Jk3PGtn39RKGXRiuqPajyhPr0HpSL3+lKw+UdST1NNhyScmvs4aL5HwE/jF3H1op2z60VYG0eAD3NIEwQx7msrxF4x0rwjamXU9QtbJRn/WyBSfwrzzxF+2h4F8OuFOoTXbKcf6PEWB/GuaeMpR3Z62FyTHYhXpU2/kerMCWIOaEUnJIrwe7/AG+/C/mFbTT9Wun7KIwCf50+w/bftb0FjoF9FHjq8iqPyrCWaU11PRXB2ZvV02e4SSbd4LDYBnPpXm/xf/aC0j4f6cywyR3t/GeEVsqpHqa8i+IX7TV/4oSSO3uxDERjyomwQPevC/HXiWa/WRnZ2DH5u9eHj8+UE4wLw/DtWE/36aMP4+fFq9+ImvXlxdzvLcTuScHIA7AV5tYaa32lHIwDzj1ro/7KbVNS3OrHngVpSeGSjKxAVQMYxXx1fEyrz5mfZYWjChTUYC6baAWkTHrnPFWILVWzuJyTxUsAESKuDgce1aNrZJNGq4yT3ropxskOrJHOatpu4NlTk98cCsK4sfKJV1ySeteiajpIS1YcszdsdK5LxBbyRwsSh446VqRCVzzbxbK1uJgGOR0xXJaJpr6pq8ZkLHY+7BHWux1PSXupWD7uT+fNWvC/hlYr5XI79TScmjvbTpOJ+nH7Isn2j9mzwmSQNtp5f0wTXoUERIbkkGvkT9mf436l8PfD9raqxuLCMbWgYnC8/wANe3v+1t4T07UrO0vW1C0lvVyjmEtECOoLD/CvtMtzOm6XLLc/MsbldeVd8ivdnqsaYUA9qXcM4zzWJ4b+IOi+MI1Om6pa3RPRVcB/yPNbBycFhgj8K9inVjNaM8zEYOvRfLOLTFf72fWkYEqMAk5/Okc/KRnJPHTpXN/Fv4hW3ws+G+sa5cOALG2dogTje+DtH4n+VFefJDmZnRpOc1G2p8peJtZj8Wft9+KJI2E8enLDa7hyMpAoI/Ag/jXu/wAL7TzvH9s5BCiNnGfpXzv+yV4al8TeJG16dWa71Uz3csp5JywGSe/JNfS2izrpnjPT2AdQshiOAD1XA/WvjcNVUqzn5n22YxcKCguiPShgkn1x/KmquGYelMDluT6DH5U+PPJPavtIyTV4nwj+LUWijNFWB+fer3er+JNYaW9urq9kkOWeUl+tFvoNjE374tK69RuKpW2bkSREk/L2xWPrk+YSq4TPtya/OKknPWTP7WoYSlBRp04KNuxo20sdrDttPKiUD+BQCfx61j6+8sjOGlk5/wBompNChe4lRGbOB94enpW1e2EPmKCAS3HSly3Wht7GnTnqrnn8Am0u9S5jaQsD82f4h3Fdx/YcOvaYksI3rMuQduSPUVXuvDkcgGRnJ49qveA7saHqf2Sdma1uWxGccRt6fQ1xVcPd6ny3FOV08RR9tSWqMW28BtYXQG1ipP41LqGiFLdmdDt6A16tL4ajbB9emRjOaxfEHhwxwhXjOwHjHQ0U6CjsfkFSrKF4y6Hj0lsY74ryQOlb2iRBoBuyGHpUniLw28F2sikFT0/wqtBM9ncbcfe9K1Bz5omzdaZvtiwwTj8a5HxFpZaNlzwexru9PJurIcZZh9a5/wAQ2TTSBOQwPagqnLoecP4d+bDID/OrUOkx2MIYD5gc4rqpPDrrIueQRnNULzSzPdrCASx646VMjqpzOm+F1+32QK+cA461ofHXxRDoPhPTXZlWaXUoY4yDg5JO79Kh8H6QbG2Q+p6Hg1yf7TMU17qHhG3AJiGo72GM52oxoV0tDsyinGpjYR6NmpqXjy50O5tvs1zJHNcSrHEwJyCeSc16Z4Q/bF8U+FHWylnt9SjiQMRcruYDPGCMGvFdf1bytR0GNIGb7TdCONcDJIRv8K9P0Xw94Sg0p7jUrOf+0rhQJmWUgnGcY9K6qOLqQ+Fn6RxBhsqhCMMRTTv5HvHw7/bO0/xfdQ2l9p01rdSjO6Fw6Ej2PSr3x88B/wDDR3gtdBNxeaXYvJ5kjQ4Lv6fQV8afEfT9U+H/AIu0rxNpaXNx4ct5AsxDZaMk9wP4elfWXw9+OyeJ9AtzZ2c93KiAFIoshOBwT0z9a7Y5rUqr2cmfjWc5PhqVb2+CVkW/hb8DrL4N6Ra2li8szWsPlLJcEPIFzk+3NdDc6UskyyzXZVwQQVwrZH0rBu/F/iPVHdYtJaGP+EzzoCfwGaz7LTvEeo3ubl7OKHnKhizY/LFYp8r9zQ8uUZSd6jud1P4xn0fZI17NcKMAGRhtwO3FdboGrrrWkx3IPLr8wHIBrz+x8K/aYES4uFCoM4Azk10/w+eK2tJ7OOR3a3YuWJ+8G/wr2csxUva8rZ4uZ4WCg5RR0W8HnNFA3EdM0V9RdHzx8B2k7JGBuw3p61Fex+bIc5J6Ul7DJDIrDHPStO0tFuEVmzkmvzdn9yzfK1JFPwzAYLliA2f0rXvCftCn05x3p2nxxRyAAdD1purN5MobHzEfh9ataHJOTlURLGC8Kk4JJ5FVrqyEpZSGJb3wf/10WV/vXZuwTVoMrupzuLcCrkr6GdSm9Y20O3+HPipdRsBZ3r/v4BhWbrIvpXQahb21/ABkMDwO+K8iudRm0u5V1JDAgj869O8GJZeO9EW5tZik6ALNHn5lPrisZe7oj8q4pyBwk8RBaGV4i8Ex3cBESKSOfauR8TeB5ray85IwCvoK9dh8Ky2URXzCSp5z2pLnQmktAkkYcN1HrS5XLdHxELw0PFvCsxniKNkOoIPFTS6QG1Als4Pc12mp/DpNLvDcW5Zd3O3ArKvtLaK5XeCNxpOPKbqVtjCOh/aIipUZHtUGk+BwdVErgfL613dpoSBkdu3OOxq1PpENtJuO0bufSplDXQISZyp0Y2j4VcqenFcz8StIRrjT1kw0sDGT1K5GK73xRrlv4f06SaUqBCOBnl+O1eUap4ik1O/eaRm3ufwC+lRsfc8H5TOtiFWtZI4j46azJo994Se3IjmOrYQk4xmKTis3WPjJqGmapu1KJ3EUo83acHGKd+0ajNF4QmU5WHWY2Oe4Mbj+Zrkv2l9Ge/WyjthIk15bb2ZTjOCM1zTk1O6P0jiDKY1sPGpJXseueLv2ldJh+EF/bq6TNcLujhIBbgcfka2v2CPjwuuaJLa6pIsJRy23gFsnqfwr428UzTeGvBjtKzLKzIuX6nccAV6l+zVYf8JNMk6yyW0Frt/dj5TcEdc+1aU046n5Zi8FDklCx+h0Xxo09dVWxshHNLIMGTGVz7etbQ1O7v4gRKoYDBUJwK+V9Q8a23hI219PexWsdqTkswVRjt+lVk/4KZ+C9A1WSzOoy3EqvtLIpKMcdjXfComryPk55fd+4rn1e1vqM2Q1yQD0wtangSZNB1cPK7yGYeW3bHPFfPPgP9uDT/Gdwgt2HlyfdZmwK9V0TxVJ4mvbNLaQeZdSKQc+4zXVhqqVROJ5OYYWVOk/aK1z3YE4GMEHpRUcYeONV67QBn1or6n20j4hqHc+EtUtWcArkgGrGnoWgcAkH3qXURwfrRF8liSOCTXx9j+1+e6KVrctDdbAeXNXfEIP2FSoIwM++azp0C3Ib+IHrWtckvpoB5yP6VQp6STOTN3KIgwfGOvODWvoOreaVJPzEZxWTcoEfAA5qTRRi5Qf561ipa2O+tCLpmp4pmYIuDgkZ681V+Hvjq68Maytzay7WU7SueJBnkGrniD5kQHnK1xCSMuouoJAZ+cfWpk/eRgsFSxNF06iPpjQfixBq1sJGGJmwdjH7vrV5/F8d9uG7BBGPSvn/S7uVLRZRI4kJxkHnFdfoeoTyxKGlc/L61rza2PxziHhuGHnKcJadj0e812GVgCA5HX2rndUkW7nY4PPc02xGYsnJJHNS3K7SMVnV2PlYYdLctRXIWxyG5TqfSua8U+NxYKWkJITIA9atiVjCQWPJ5968f8Aibq9y3i0QGZzEqkhe1ZyqOyPqeGsihjcSoSdkWdc8Xz+KboO7ny42wF7D61UkIXBzkg9c1zvgmZ5EuGZixM7A557VuXrlY48HqaxTP3XA5ZSwsFTpK1jjPjnP5th4ehLnc2qxEcegbNM+LGnJfX3hoysRHK727uoyVyo/wAKyPj1cyR614SUOQG1V8j/AIA9anxQYnw9ozZO5b+Ag9xnOa55SvLQ9KrRU4KL6nEfFL4by6t4jtIL6MLaWsquNpysoUZB+vNdZ4CspdBL3NuBGGPyADAPauu8Q2UWoaGfORZNiZGexxXP+FGO1ATkITgdQOa3i+5+R8V5csO3yM86/aX0291Dw79rurmeUq4KoTxk8AfWvFPCHw7m1DWIom3ls53YyQc9K+lvjrGLiwtFcblZgxHYnNcZ4PtI7fxoWRFUhwOB7VFabvY+RwMLR5z1b4LfCG3is7eVN8dwuG3I2Bn6V9gfs2aTcXXjOwaU71tYS+AOM4xmvEPhlAiQREKBuUZx9K+kf2YEH9vX7/xJAoB9Oa93LKKck2fDcTYmbUkz2pncscMSO1FPtUBgUkZJFFfX8qPzZzZ//9k=",
							mails : { work : "", home : "", other : "", mobile : "" },
							phone : { work : "", home : "", other : "", mobile : "01011111111" },
							sns : {}
						}
					};
				} else if (contactId == "201109050015") {
					this.contactInfo[contactId] = {
						id : "201109050015",
						value : {
							name : "Park So yun",
							picture : "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",
							mails : { work : "", home : "", other : "", mobile : "" },
							phone : { work : "", home : "", other : "", mobile : "01015151515" },
							sns : {}
						}
					};
				}
			}
		}
		this.displayContacts();
	}
};
ContactSegment.prototype.getOptionContactInfoCallback = function(xhr) {
	pu.finishMilestone("load data, contact info, server db");
	
	if (xhr.status == 200) {
		var result = checkAjaxResponse(xhr.responseText);
		if (nvl(result) != "") {
			var response = JSON.parse(result);
			
			if (response.message.code === 0) {
				var contacts = response.result.contacts;
				
				this.updateContactInfo(contacts, true);
				this.displayContacts();
				// photo
				for (var i=0, count=this.option.length ; i<count ; ++i) {
					var contactId = this.option[i];
					
					this.getContactPhoto(contactId, "home");
				}
				
				this.notificationList = {};
				this.getNotifications();
			}
		}
	}
};
ContactSegment.prototype.updateContactInfo = function(contacts, useYn) {
	if (contacts) {
		for (var i=0, count=contacts.length ; i<count ; ++i) {
			var contact = contacts[i],
				info = {
					id : contact.cid,
					value : {
						name : contact.name,
						mails : contact.email,
						phone : contact.phone,
						sns : contact.sns
					},
					useYn : useYn
				};
			
			this.contactInfo[info.id] = info;
		}
	}
};
ContactSegment.prototype.displayContacts = function() {
	for (var i=0, count=this.option.length ; i<count ; ++i) {
		var selector = this.mainSelector + " .col_contact:eq(" + i + ")",
			contactId = this.option[i],
			contact = this.contactInfo[contactId],
			name;
		
		if (contact && contact.value) {
			name = ((contact.value.name != "") ? contact.value.name : "no name");
			jQuery(selector + " .name").html(name);
			if (contact.value.picture) {
				jQuery(selector + " img").attr("src", "data:image/png;base64," + contact.value.picture);
			} else {
				jQuery(selector + " img").attr("src", getDefaultContactImage());
			}
		}
	}
};
ContactSegment.prototype.deleteOptions = function(optionList) {
	if (optionList) {
		var segmentManager = this.request.getSegmentManager();
		
		for (var i=0, count=optionList.length ; i<count ; ++i) {
			this.deleteOption(optionList[i]);
		}
		
		segmentManager.setSegmentOption(this.homeId, this.sgmtId, this.option);		// update homeInfo
		segmentManager.updateSegmentOption(this.homeId, this.sgmtId);		// update segment option on DB
		// check the number of options
		if (this.option.length == 0) {
			segmentManager.deleteSegment(this.homeId, this.sgmtId);
		} else {
			// refresh iscroll
			this.setMovingAreaWidth(true);
			this.setIScroll(true, true);	
		}
	}
};
ContactSegment.prototype.deleteOption = function(contactId) {
	// update contact list
	if (this.contactInfo.hasOwnProperty(contactId)) {
		this.contactInfo[contactId].useYn = false;
	}
	
	// delete option
	for (var i=0, count=this.option.length ; i<count ; ++i) {
		if (this.option[i] == contactId) {
			this.option.splice(i, 1);
			this.request.getEventHandler().removeLocalStorage("contactInfo_" + contactId);
			break;
		}
	}
};
ContactSegment.prototype.getNotifications = function() {
	for (var i=0, count=this.option.length ; i<count ; ++i) {
		this.notificationList[this.option[i]] = {
			count : 0,
			facebookLink : [],
			gmailLink : []
		};
	}
	
	this.getFacebookNotifications();
	this.getGmailNotifications();
};
ContactSegment.prototype.getFacebookNotifications = function() {
	var segmentObj = this,
		facebookUser = this.getFacebookUserList(),
		facebookManager = this.request.getSnsManager().facebookManager;
	
	// Get Facebook Photos
	if ((facebookUser.length > 0) && facebookManager) {
		var query = "SELECT notification_id, sender_id, object_type, updated_time, href FROM notification ",
			where = "WHERE recipient_id = me() AND object_type IN ('stream', 'photo', 'friend') AND is_unread = 1";
		where += " AND sender_id IN (" + facebookUser.join(",") + ")";
		facebookManager.executeFQL(query + where, function(response) {
			if (response.length > 0) {
				segmentObj.compareFacebookNotification(response);
			}
			segmentObj.onNotificationGet();
		}, function(message) {
			var errorMessage = "[ContactSegment.getFacebookNotifications()] " + message;
			segmentObj.request.getEventHandler().showErrorMessage(errorMessage);
			segmentObj.onNotificationGet();
		});
	} else {
		this.onNotificationGet();
	}
};
ContactSegment.prototype.getFacebookUserList = function() {
	var facebookUser = [];
	
	for (var i=0, count=this.option.length ; i<count ; ++i) {
		var contactId = this.option[i],
			contact = this.contactInfo[contactId];
		
		if (contact && contact.value && contact.value.sns && contact.value.sns.facebook) {
			facebookUser.push("'" + contact.value.sns.facebook + "'");
		}
	}
	
	return facebookUser;
};
ContactSegment.prototype.getContactIdUsingFacebookId = function(facebookId) {
	for (var i=0, count=this.option.length ; i<count ; ++i) {
		var contactId = this.option[i],
			contact = this.contactInfo[contactId];
		
		if (contact && contact.value && contact.value.sns && contact.value.sns.facebook && (contact.value.sns.facebook == facebookId)) {
			return contact.id;
		}
	}
	
	return null;
};
ContactSegment.prototype.compareFacebookNotification = function(notificationList) {
	for (var i=0, count=notificationList.length ; i<count ; ++i) {
		var notification = notificationList[i],
			contactId = this.getContactIdUsingFacebookId(notification.sender_id);
		
		if (contactId && this.notificationList.hasOwnProperty(contactId)) {
			this.notificationList[contactId].facebookLink.push(notification.href);
		}
	}
};
ContactSegment.prototype.getGmailNotifications = function() {			
	var segmentObj = this,
		gmailManager = this.request.getSnsManager().gmailManager;
	
	if (gmailManager) {
		gmailManager.getNotification(function(result) {
			if (result instanceof Document) {
				var root = result.documentElement,
					entry = jQuery(root).children("entry"),
					notiList = [];
				
				for (var i=0, mailCount=entry.length ; i<mailCount ; ++i) {
					var mail = entry[i],
						link = getNodeByNodeName(entry[i], "link")[0].getAttribute("href"),
						author = getNodeByNodeName(entry[i], "author"),
						email = getNodeValue(getNodeByNodeName(author[0], "email")[0]);
					
					if ((link != null) && (email != null)) {
						notiList.push({ link : link, from : email });
					}
				}
				segmentObj.compareGmailNotification(notiList);
			}
			segmentObj.onNotificationGet();
		});
	} else {
		this.onNotificationGet();
	}
};
ContactSegment.prototype.compareGmailNotification = function(notificationList) {
	for (var i=0, count=this.option.length ; i<count ; ++i) {
		var contactId = this.option[i];
		
		for (var j=0, notiCount=notificationList.length ; j<notiCount ; ++j) {
			var contact = this.contactInfo[contactId],
				mails = contact.mails;
			
			for (var pos in mails) {
				if (mails.hasOwnProperty(pos)) {
					if ((mails[pos] == notificationList[j].from) && this.notificationList.hasOwnProperty(contactId)) {
						this.notificationList[contactId].gmailLink.push(notificationList[j].link);
						break;
					}
				}
			}
		}
	}
};
ContactSegment.prototype.onNotificationGet = function() {
	var segmentObj = this;
	
	if (++this.notificationGetCount == 2) {
		this.notificationGetCount = 0;
		this.displayNotification();
		
		this.request.getEventHandler().setInterval("contactNotification", function() {
			segmentObj.getNotifications();
		}, 10 * 60 * 1000);
	}
};
ContactSegment.prototype.displayNotification = function() {
	for (var i=0, count=this.option.length ; i<count ; ++i) {
		var id = this.option[i];
		
		if (this.notificationList.hasOwnProperty(id)) {
			this.notificationList[id].count = this.notificationList[id].facebookLink.length + this.notificationList[id].gmailLink.length;
			if (this.notificationList[id].count > 0) {
				jQuery(this.mainSelector + " .notification:eq(" + i + ")").html(this.notificationList[id].count).show();
			} else {
				jQuery(this.mainSelector + " .notification:eq(" + i + ")").html("").hide();
			}
		}
	}
};
ContactSegment.prototype.updateOption = function(checkboxInfo) {
	var newOption = [];

	if (checkboxInfo) {
		for (var i=0, count=checkboxInfo.length ; i<count ; ++i) {
			var info = checkboxInfo[i];
			
			if (this.contactInfo.hasOwnProperty(info.id)) {
				this.contactInfo[info.id].useYn = info.useYn;
			}
			if (info.useYn) {
				newOption.push(info.id);
			}
		}
		
		this.option = newOption;
	}
};
ContactSegment.prototype.initContactInfo = function(flag) {
	var segmentObj = this;
	
	this.request.homeEventHandler.showStatusBar("Load Contact List...");
	this.contactListLoaded = true;
	jQuery.ajax({
		url : "/aphone/chs/contacts",
		type : "POST",
		complete : function(xhr) {
			if (xhr.readyState == 4) {
				if (xhr.status == 200) {
					var result = checkAjaxResponse(xhr.responseText);
					if (nvl(result) != "") {
						var response = JSON.parse(result);
						if (response.message.code == 0) {
							var contacts = response.result.contacts;
							if (contacts) {
								segmentObj.updateContactInfo(contacts, false);
								for (var i=0, contactCount=contacts.length ; i<contactCount ; ++i) {
									segmentObj.getContactPhoto(contacts[i].cid, "search");
								}
							} else {
								// error message
								console.error("NO CONTACT INFORMATION");
							}
						}
					}
					
					segmentObj.refreshContactUseYn();
					if (flag) {
						segmentObj.showSearchList();
					}
				}
			}
		}
	});
};
ContactSegment.prototype.getContactPhoto = function(contactId, loadTo) {
	var segmentObj = this,
		homeEventHandler = this.request.getEventHandler(),
		api = "/aphone/contact/contact/" + contactId + "/photo",
		type = "GET";
	
	this.request.homeEventHandler.showStatusBar("Request Contact Image [" + contactId + "]...");
//	if (chsConstants.workerExist) {
//		var data = { url : api, type : type };
//		homeEventHandler.executeWorker("getContactPhoto_" + contactId, data, function(xhr) {
//			segmentObj.getContactPhotoCallback(xhr, api, contactId, loadTo);
//		});
//	} else {
		jQuery.ajax({
			url : api,
			type : "GET",
			complete : function(xhr) {
				if (xhr.readyState == 4) {
					segmentObj.getContactPhotoCallback(xhr, api, contactId, loadTo);
				}
			}
		});
//	}
};
ContactSegment.prototype.getContactPhotoCallback = function(xhr, api, contactId, loadTo) {
	var homeEventHandler = this.request.getEventHandler();
	
	if (xhr.status == 200) {
		var result = checkAjaxResponse(xhr.responseText, api);
		if (nvl(result) != "") {
			var response = JSON.parse(result);
			if (response.message.code == 0) {
				var photo = response.result;
				if (nvl(photo) == "") {
					photo = getDefaultContactImage().split("data:image/png;base64,")[1];
				}
				this.setContactPhoto(contactId, photo);
				if (photo) {
					if (loadTo == "search") {
						jQuery("#searchList_iscroll img#" + contactId).attr("src", "data:image/png;base64," + photo);
					} else if (loadTo == "home") {
						jQuery(this.mainSelector + " .col_contact[id=" + contactId + "] img").attr("src", "data:image/png;base64," + photo);
						// save current contactInfo into local storage
						homeEventHandler.setLocalStorage("contactInfo_" + contactId, JSON.stringify(this.contactInfo[contactId]));
					}
				}
			}
		}
		homeEventHandler.hideStatusBar();
	} else {
		homeEventHandler.showAjaxError("ContactSegment.getContactPhoto()", xhr);
	}
};
ContactSegment.prototype.setContactPhoto = function(contactId, photo) {
	if (this.contactInfo.hasOwnProperty(contactId)) {
		this.contactInfo[contactId].value.picture = photo;
	}
};
ContactSegment.prototype.showSearchList = function() {
	var homeEventHandler = this.request.getEventHandler(),
		list = {
			left : "thumbnail",
			middle : 1,
			right : "checkbox",
			data : [],
			checkbox : {
				required : false,
				removable : false
			}
		};
	
	for (var contactId in this.contactInfo) {
		if (this.contactInfo.hasOwnProperty(contactId)) {
			var contact = this.contactInfo[contactId],
				data = {
					id : contact.id,
					thumbnail : contact.value.picture,
					line1 : contact.value.name,
					checkbox : {
						id : contact.id,
						checked : contact.useYn
					}
				};
			
			if (nvl(data.line1) == "") {
				data.line1 = "no name";
			}
			list.data.push(data);
		}
	}
	list.data = selectionSort(list.data, "line1");
	
	homeEventHandler.getSearchList().setList(list);
	homeEventHandler.hideStatusBar();
	
	// refresh searchlist iscroll
	homeEventHandler.setVerticalIScroll("searchList_iscroll", false);
};
ContactSegment.prototype.getContactInfo = function() {
	return this.contactInfo;
};
ContactSegment.prototype.refreshContactUseYn = function() {
	// reset
	for (var contactId in this.contactInfo) {
		if (this.contactInfo.hasOwnProperty(contactId)) {
			this.contactInfo[contactId].useYn = false;
		}
	}
	// update
	for (var i=0, count=this.option.length ; i<count ; ++i) {
		var contactId = this.option[i];
		
		if (this.contactInfo.hasOwnProperty(contactId)) {
			this.contactInfo[contactId].useYn = true;
		}
	}
};
ContactSegment.prototype.startEditMode = function() {
	this.setMovingAreaWidth(true);
	this.setIScroll(true);
	
	jQuery(this.mainSelector + " .contact_detail").hide();		// hide contact detail
	jQuery(this.mainSelector + " .item_cover").unbind();		// unbind event from item_cover
	// Set Segment Drag & Scroll Handler
	if (chsConstants.isMobile) {
		var eventList = "taphold touchmove touchend touchcancel";
		jQuery(this.mainSelector).unbind(eventList).bind(eventList, { cloudHomeScreen : this.request }, function(event) {
			var cloudHomeScreen = event.data.cloudHomeScreen;
			cloudHomeScreen.getEventHandler().segmentDragHandler(event, this);
		});
	}
};
ContactSegment.prototype.finishEditMode = function() {
	var cloudHomeScreen = this.request,
		homeEventHandler = cloudHomeScreen.getEventHandler(),
		segmentManager = cloudHomeScreen.getSegmentManager(),
		homeId = this.homeId,
		sgmtId = this.sgmtId,
		eventType = chsConstants.tapReplaceEvent;
	
	this.setMovingAreaWidth(false);
	this.setIScroll();
	// bind event for showing contact detail into item_cover
	for (var i=0, count=this.option.length ; i<count ; ++i) {
		var contactId = this.option[i];
		jQuery(this.mainSelector + " .col_contact:eq(" + i + ") .item_cover").unbind(eventType).bind(eventType, { contactId : contactId }, function(event) {
			if (isMyEvent(event) && isLeftButtonClick(event)) {
				var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId),
					contactId = event.data.contactId,
					segmentScrollInfo = homeEventHandler.segmentScroll[homeId + sgmtId + "Section"];
				
				if (segmentScrollInfo && !segmentScrollInfo.isMove) {
					segmentObj.showContactDetail(contactId);
				}
			}
		});
	}
};
ContactSegment.prototype.setMovingAreaWidth = function(include) {
	var itemCount = jQuery(this.mainSelector + " .contacts .item").size();
	if (!include) {
		itemCount -= 1;
	}
	var areaWidth = 0;
	for (var i=0 ; i<itemCount ; ++i) {
		areaWidth += jQuery(this.mainSelector + " .contacts .item:eq(" + i + ")").outerWidth(true);
	}
	jQuery(this.mainSelector + " .contacts > *:first").css("width", areaWidth + "px");
};
ContactSegment.prototype.setIScroll = function(disable, noMove) {
	try {
		var id = this.homeId + this.sgmtId + "Section";
		var options = { hScroll : true, vScroll : false, hScrollbar : true, vScrollbar : false, hideScrollbar : true, fadeScrollbar : true, desktopCompatibility : true, snap : true, momentum : false, hidden : true };
		var buttons = {
				prev : "#" + this.homeId + this.sgmtId + "_slidePrev",
				next : "#" + this.homeId + this.sgmtId + "_slideNext"
		};

		var homeEventHandler = this.request.getEventHandler();
		if (homeEventHandler.hasIScroll(id) && (jQuery(this.mainSelector + " .item").size() > 0)) {
			homeEventHandler.refreshIScroll(id);
			
			if (disable) {
				homeEventHandler.disableIScroll(id);
				if (chsConstants.isMobile) {
					homeEventHandler.unbindIScroll(id, "mousemove mouseup");
				}
			} else {
				homeEventHandler.enableIScroll(id);
			}
			
			if (!noMove) {
				homeEventHandler.scrollToPage(id, 0, 0, 0);
			}
		} else {
			homeEventHandler.createIScroll(id, options, buttons);
		}
	} catch (e) {
		console.warn(e.message);
	}
};
ContactSegment.prototype.onRemoved = function() {
	this.request.getEventHandler().clearInterval("contactNotification");
};


/** GALLERY SEGMENT */
var GallerySegment = function(request) {
	this.request = request;
	this.initOption = ["myc"];
	this.option = [];
	this.initGallerySegment();
	this.setSegmentType("gallery");
};
GallerySegment.prototype = new Segment();
GallerySegment.prototype.initGallerySegment = function() {
	this.imageReadyCount = 0;
	this.imageList = [];
	this.imageIndex = 0;
	this.cachedImageIndex = 0;
	
	this.layoutNo = 0;
	this.layoutList = [{
		className : "random_1",
		items : 5
	}, {
		className : "random_2",
		items : 5
	}, {
		className : "random_3",
		items : 5
	}];
	
	this.galleryInfo = {
		"myc"	: { name : "mycloud",	type : "mycloud" },
		"fb"	: { name : "facebook",	type : "sns" },
		"flk"	: { name : "flickr",	type : "sns" },
		"pcs"	: { name : "picasa",	type : "sns" }
	};
};
GallerySegment.prototype.load = function(homeId, sgmtId, option, loadType) {
	this.setProperties(homeId, sgmtId, option);
	if (this.option.toString == "[object Object]") {
		this.setOption(null);
		this.request.getSegmentManager().setSegmentOption(homeId, sgmtId, this.option, true);
	}
	this.initGalleryInfo();
	this.getGalleryImages(loadType);
};
GallerySegment.prototype.initGalleryInfo = function() {
	var list = [],
		snsManager = this.request.getSnsManager();

	for (var galleryId in this.galleryInfo) {
		if (this.galleryInfo.hasOwnProperty(galleryId)) {
			var galleryInfo = this.galleryInfo[galleryId];
			if (this.hasOption(galleryId) && ((galleryId == "myc") || snsManager.getManager(galleryInfo.name))) {
				list.push(galleryId);
			}
		}
	}
	
	this.setOption(list);
};
GallerySegment.prototype.configGallerySegment = function() {
	var segmentObj = this,
		pageCount = parseInt(this.imageList.length / 5, 10) + 1;
	
	if (this.swipeView == null) {
		jQuery(this.mainSelector + " .gallery > div:first").html("<div class=\"gallery_wrap\"></div>");
		this.setMovingAreaWidth();
		
		this.swipeView = new SwipeView("#" + this.homeId + this.sgmtId + "Section .moving_area .gallery_wrap", { numberOfPages : pageCount, hastyPageFlip : true });
		jQuery(this.mainSelector + " .gallery #swipeview-slider > div[id^=swipeview-]").html(this.getGalleryLayout());
		
		this.swipeView.onFlip(function() {
			setTimeout(function() {
				for (var i=0 ; i<3 ; ++i) {
					var pageIndex = segmentObj.swipeView.masterPages[i].dataset.pageIndex;
					segmentObj.displayImage(parseInt(pageIndex, 10));
				}
			}, 500);
		});
		
		jQuery(this.mainSelector + " .arrow_container > a.arrow-left").unbind("click").bind("click", function(event) {
			segmentObj.swipeView.prev();
		});
		jQuery(this.mainSelector + " .arrow_container > a.arrow-right").unbind("click").bind("click", function(event) {
			segmentObj.swipeView.next();
		});
	} else {
		this.swipeView.updatePageCount(pageCount);
		this.swipeView.refreshSize();
	}
	
	/*jQuery(this.mainSelector + " .item_cover").unbind("swipeleft").bind("swipeleft", function(event) {
		event.preventDefault();		// prevent browser scroll
		segmentObj.onSwipeLeft();
	}).unbind("swiperight").bind("swiperight", function(event) {
		event.preventDefault();
		segmentObj.onSwipeRight();
	});*/
};
GallerySegment.prototype.getGalleryLayout = function() {
	var innerHTML = "<div class=\"gallery_wrap\">",
		layout;
	
	this.layoutNo = parseInt(Math.random() * this.layoutList.length);
	if (this.layoutNo == 0) {
		layout = this.getGalleryColumn(2) + this.getGalleryColumn(1) + this.getGalleryColumn(2);
	} else if (this.layoutNo == 1) {
		layout = this.getGalleryColumn(1) + this.getGalleryColumn(2) + this.getGalleryColumn(2);
	} else if (this.layoutNo == 2) {
		layout = this.getGalleryColumn(2) + this.getGalleryColumn(2) + this.getGalleryColumn(1);	
	}
	innerHTML += layout + "<div class=\"item_cover\"></div></div>";
	
	return innerHTML;
};
GallerySegment.prototype.getGalleryColumn = function(count) {
	var column = "<div class=\"col_photo random_" + this.layoutNo + "\">";
	
	for (var i=0 ; i<count ; ++i) {
		column +=	"<figure>" +
						"<img class=\"photo\" />" +
					"</figure>";
	}
	
	return column + "</div>";
};
GallerySegment.prototype.getGalleryImages = function(loadType) {
	this.imageReadyCount = 0;
	this.cachedImageIndex = 0;
	if (navigator.onLine || true && (loadType != "cache")) {		// FIX_NAVI
		if (this.option.length > 0) {
			// Initialize Image List
			this.imageList = [];
			var flag = false;
			for (var i=0, count=this.option.length ; i<count ; ++i) {
				var galleryId = this.option[i];
				if (galleryId == "myc") {
					this.getMyCloudGalleryImage();
				} else {
					this.getSnsGalleryImage(galleryId);
				}
			}
		} else {
			// no image display...
//			this.request.getEventHandler().inCaseOfNoContents(this.sgmtId);
		}
	} else {
		var galleryImageInfo = this.request.getEventHandler().getLocalStorage("gallery_info");
		if (nvl(galleryImageInfo) != "") {
			this.imageList = JSON.parse(galleryImageInfo);
			this.configGallerySegment();
//			this.displayImage();
			for (var i=0 ; i<3 ; ++i) {
				var pageIndex = this.swipeView.masterPages[i].dataset.pageIndex;
				this.displayImage(parseInt(pageIndex, 10));
			}
		}
	}
};
GallerySegment.prototype.getMyCloudGalleryImage = function() {
	var segmentObj = this,
		homeEventHandler = this.request.getEventHandler(),
		url = "/aphone/gallery/photos",
		type = "GET";
	
	if (chsConstants.workerExist) {
		var data = { url : url, type : type };
		homeEventHandler.executeWorker("getMyCloudGalleryImage", data, function(xhr) {
			if (xhr.status == 200) {
				var result = checkAjaxResponse(xhr.responseText, url);
				if (result && (result != "")) {
					var response = JSON.parse(result);
					segmentObj.getMyCloudGalleryImageCallback(response);
				}
			} else {
				homeEventHandler.showAjaxError("GallerySegment.getMyCloudGalleryImage()", xhr);
			}
		});
	} else {
		jQuery.ajax({
			url : url,
			type : type,
			dataType : "json",
			success : function(response) {
				segmentObj.getMyCloudGalleryImageCallback(response);
			},
			error : function(error) {
				segmentObj.request.getEventHandler().showAjaxError("GallerySegment.getMyCloudGalleryImage()", error);
				segmentObj.onImageReady();
			}
		});
	}
};
GallerySegment.prototype.getMyCloudGalleryImageCallback = function(response) {
	if (response.message.code == 0) {
		var photos = response.result.photos;
		if (photos && (photos.length > 0)) {
			for (var i=0, imageCount=photos.length ; i<imageCount ; ++i) {
				var image = {
					url : photos[i].mediaPath,
					modified : parseInt(photos[i].createDate)
				};
				this.imageList.push(image);
			}
		}
	} else {
		this.request.getEventHandler().showErrorMessage(response.message.text);
	}
	
	this.onImageReady();
};
GallerySegment.prototype.getSnsGalleryImage = function(galleryId) {
	if (galleryId == "fb") {
		this.getFacebookImages();
	} else if (galleryId == "flk") {
		this.getFlickrImages();
	} else if (galleryId == "pcs") {
		this.getPicasaImages();
	}
};
GallerySegment.prototype.getFacebookImages = function() {
	var segmentObj = this,
		facebookManager = this.request.getSnsManager().facebookManager;
	
	if (facebookManager) {
		var query = "SELECT pid, aid, src_big, link, modified FROM photo WHERE aid IN ( SELECT aid FROM album WHERE owner IN ( SELECT uid FROM user WHERE uid = me() ) )";
		facebookManager.executeFQL(query, function(response) {
			segmentObj.getFacebookImagesCallback(response);
		}, function(message) {
			var errorMessage = "[GallerySegment.getFacebookImages()] " + message;
			segmentObj.request.getEventHandler().showErrorMessage(errorMessage);
			segmentObj.onImageReady();
		});
	} else {
		this.onImageReady();
	}
};
GallerySegment.prototype.getFacebookImagesCallback = function(imageList) {
	for (var i=0, count=imageList.length ; i<count ; ++i) {
		var image = {
			type : "facebook",
			url : imageList[i].src_big,
			modified : imageList[i].modified
		};
		this.imageList.push(image);
	}
	
	this.onImageReady();
};
GallerySegment.prototype.getFlickrImages = function() {
	var segmentObj = this,
		flickrManager = this.request.getSnsManager().flickrManager;
	
	if (flickrManager) {
		flickrManager.getPhotosetList(function(response) {
			segmentObj.getFlickrPhotosetListCallback(response);
		}, function(message) {
			var errorMessage = "[GallerySegment.getFlickrImage()] " + message;
			segmentObj.request.getEventHandler().showErrorMessage(errorMessage);
			segmentObj.onImageReady();
		});
	} else {
		this.onImageReady();
	}
};
GallerySegment.prototype.getFlickrPhotosetListCallback = function(resultObj) {
	var photosetId = [];
	if (resultObj.stat == "ok") {
		var photoset = resultObj.photosets.photoset;
		for (var i=0, count=photoset.length ; i<count ; ++i) {
			photosetId.push(photoset[i].id);
		}
	}
	
	this.getFlickrPhotosFromPhotoset(photosetId);
};
GallerySegment.prototype.getFlickrPhotosFromPhotoset = function(ids) {
	var segmentObj = this;
	// Request Flickr Photos
	if (ids.length != 0) {
		var count = 0,
			photosetCount = ids.length,
			api = "http://api.flickr.com/services/rest/";
		
		for (var i=0 ; i<photosetCount ; ++i) {
			var additionalParams = {
					nojsoncallback : 1,
					format : "json",
					method : "flickr.photosets.getPhotos",
					photoset_id : ids[i],
					extras : "url_l, last_update"
			};
			
			this.request.getSnsManager().flickrManager.getPhotosetPhotos(additionalParams, function(resultObj) {
				if (resultObj.stat == "ok") {
					var photo = resultObj.photoset.photo;
					for (var j=0, imageCount=photo.length ; j<imageCount ; ++j) {
						var image = {
							type : "flickr",
							url : photo[j].url_l,
							modified : parseInt(photo[j].lastupdate)
						};
						
						segmentObj.imageList.push(image);
					}
				}
				
				// Finish Getting Flickr Photos
				if (++count == photosetCount) {
					segmentObj.onImageReady();
				}
			}, function(message) {
				var errorMessage = "[GallerySegment.getFlickrPhotosFromPhotoset()] " + message;
				segmentObj.request.getEventHandler().showErrorMessage(errorMessage);
				segmentObj.onImageReady();
			});
		}
	} else {
		this.onImageReady();
	}
};
GallerySegment.prototype.getPicasaImages = function() {
	var segmentObj = this,
		picasaManager = this.request.getSnsManager().picasaManager;
	
	if (picasaManager) {
		picasaManager.getAlbumList(function(result) {
			var albumList = [],
				root = result.documentElement,
				entry = jQuery(root).children("entry");
			
			for (var i=0, count=entry.length ; i<count ; ++i) {
				albumList.push(jQuery(entry[i]).children("gphoto\\:id").text());
			}
			
			segmentObj.getPicasaPhotosFromAlbum(albumList);
		}, function(message) {
			var errorMessage = "[GallerySegment.getPicasaImages()] " + message;
			segmentObj.request.getEventHandler().showErrorMessage(errorMessage);
			segmentObj.onImageReady();
		});
	} else {
		this.onImageReady();
	}
};
GallerySegment.prototype.getPicasaPhotosFromAlbum = function(albumList, params) {
	var segmentObj = this,
		albumCount = albumList.length;
	
	if (albumCount != 0) {
		var count = 0;
		for (var i=0 ; i<albumCount ; ++i) {
			this.request.getSnsManager().picasaManager.getPhotosFromAlbum(albumList[i], function(result) {
				var root = result.documentElement,
					entry = jQuery(root).children("entry");
				
				for (var j=0, imageCount=entry.length ; j<imageCount ; ++j) {
					var updated = jQuery(entry[j]).children("updated").text(),
						photo = {
							type : "picasa",
							url : jQuery(entry[j]).children("content").attr("src"),
							modified : (new Date(updated)).getTime()/1000
						};
					
					segmentObj.imageList.push(photo);
				}
				
				// Finish Getting Picasa Photos
				if (++count == albumCount) {
					segmentObj.onImageReady();
				}
			}, function(message) {
				var errorMessage = "[GallerySegment.getPicasaPhotosFromAlbum()] " + message;
				segmentObj.request.getEventHandler().showErrorMessage(errorMessage);
				segmentObj.onImageReady();
			});
		}
	} else {
		this.onImageReady();
	}
};
GallerySegment.prototype.onImageReady = function() {
	if (++this.imageReadyCount == this.option.length) {
		var segmentObj = this;
		
		this.imageReadyCount = 0;
		this.sortImages();
		this.configGallerySegment();
//		this.displayImage();
		for (var i=0 ; i<3 ; ++i) {
			var pageIndex = this.swipeView.masterPages[i].dataset.pageIndex;
			this.displayImage(parseInt(pageIndex, 10));
		}
		
		if (navigator.onLine || true) {		// FIX_NAVI
			var cachedImage = [];
			for (var i=0 ; i<this.imageList.length && i<15 ; ++i) {
				cachedImage.push(this.imageList[i]);
			}
			this.request.getEventHandler().setLocalStorage("gallery_info", JSON.stringify(cachedImage));
		}
	}
};
GallerySegment.prototype.onSwipeLeft = function() {
	this.displayImage();
};
GallerySegment.prototype.onSwipeRight = function() {
	this.imageIndex = (this.imageIndex - 10) % this.imageList.length;
	this.cachedImageIndex = (this.cachedImageIndex - 10) % 15;
	this.displayImage();
};
GallerySegment.prototype.sortImages = function() {
	this.imageList = selectionSort(this.imageList, "modified", "desc");
};
GallerySegment.prototype.displayImage = function(pageIndex) {
	if (this.imageList.length > 0) {
		var cachedImage = [],
			startIndex = pageIndex * 5;
		
		for (var i=0 ; i<5 ; ++i) {
			var imageInfo = this.imageList[startIndex];
			if (imageInfo) {
				jQuery(this.mainSelector + " div[data-page-index=" + pageIndex + "] figure:eq(" + i + ") > .photo").getCachedImage(imageInfo.url, "gallery_image_" + this.cachedImageIndex).load(function(event) {
					adjustImageSize(this);
					jQuery(this).fadeIn("fast");
				});
				
				// append icon image
				if (imageInfo.type == null) {
					jQuery(this.mainSelector + " div[data-page-index=" + pageIndex + "] figure:eq(" + i + ") > .logo").remove();
				} else {
					if (jQuery(this.mainSelector + " div[data-page-index=" + pageIndex + "] figure:eq(" + i + ") > .logo").size() == 0) {
						jQuery(this.mainSelector + " div[data-page-index=" + pageIndex + "] figure:eq(" + i + ")").append("<img class=\"logo\" src=\"/aphone/images/chs/home_icon_" + imageInfo.type + ".png\">");
					} else {
						jQuery(this.mainSelector + " div[data-page-index=" + pageIndex + "] figure:eq(" + i + ") > .logo").attr("src", "/aphone/images/chs/home_icon_" + imageInfo.type + ".png");
					}
				}
			}				
			
			this.cachedImageIndex = (this.cachedImageIndex + 1) % 15;
			startIndex = (startIndex + 1) % this.imageList.length;
		}
		
		/*var imageInfo = [],
			imageCount = this.imageList.length;
		// display images
		for (var i=0, count=this.layoutList[this.layoutNo].items ; i<count ; ++i) {
			imageInfo.push(this.imageList[this.imageIndex]);
			// display image
			jQuery(this.mainSelector + " figure:eq(" + i + ") > .photo").getCachedImage(this.imageList[this.imageIndex].url, "gallery_image_" + this.cachedImageIndex);
			jQuery(this.mainSelector + " figure:eq(" + i + ") > .photo").load({ segmentObj : this, index : this.imageIndex }, function(event) {
				var segmentObj = event.data.segmentObj,
					index = event.data.index,
					width = jQuery(this).outerWidth(true),
					height = jQuery(this).outerHeight(true),
					type = ((width > height) ? "h" : "v");
				
				if (type == "h") {
					jQuery(this).css({ width : "auto", height : "100%" });
				} else {
					jQuery(this).css({ width : "100%", height : "auto" });
				}
				jQuery(this).fadeIn("fast");
			});
			
			// append icon image
			if (this.imageList[this.imageIndex].type == null) {
				jQuery(this.mainSelector + " figure:eq(" + i + ") > .logo").remove();
			} else {
				if (jQuery(this.mainSelector + " figure:eq(" + i + ") > .logo").size() == 0) {
					jQuery(this.mainSelector + " figure:eq(" + i + ")").append("<img class=\"logo\" src=\"/aphone/images/chs/home_icon_" + this.imageList[this.imageIndex].type + ".png\">");
				} else {
					jQuery(this.mainSelector + " figure:eq(" + i + ") > .logo").attr("src", "/aphone/images/chs/home_icon_" + this.imageList[this.imageIndex].type + ".png");
				}
			}				
			
			// update imageIndex
			this.imageIndex = (this.imageIndex + 1) % imageCount;
			this.cachedImageIndex = (this.cachedImageIndex + 1) % 15;
		}
		
		if (navigator.onLine || true) {		// FIX_NAVI
			this.request.getEventHandler().setLocalStorage("gallery_info", JSON.stringify(imageInfo));
		}*/
	} else {
		this.request.showToast("Your gallery have no picture.");
	}
};
GallerySegment.prototype.getGallerySource = function() {
	var list = [],
		snsManager = this.request.getSnsManager();
	if (this.hasOption("myc") === false) {
		list.push(this.galleryInfo["myc"].name);
	}
	list.push("sns");
	
	return list;
};
GallerySegment.prototype.getFolderList = function(source) {
	var list = [],
		snsManager = this.request.getSnsManager();
	
	for (var galleryId in this.galleryInfo) {
		if (this.galleryInfo.hasOwnProperty(galleryId)) {
			var galleryInfo = this.galleryInfo[galleryId];
			if ((galleryInfo.type == source) && snsManager.getManager(galleryInfo.name)) {
				list.push({ id : galleryId, name : galleryInfo.name, useYn : this.hasOption(galleryId) });
			}
		}
	}
	
	return list;
};
GallerySegment.prototype.getUsedFolderList = function() {
	var list = [];
	
	for (var i=0, count=this.option.length ; i<count ; ++i) {
		var galleryId = this.option[i],
			galleryInfo = this.galleryInfo[galleryId];
		
		list.push({ id : galleryId, name : galleryInfo.name });
	}
	
	return list;
};
GallerySegment.prototype.updateFolderUseYn = function(folderCheckingList, source) {
	var option = [];
	
	if (source == this.galleryInfo["myc"].name) {
		option.push("myc");
		for (var i=0, count=this.option.length ; i<count ; ++i) {
			var galleryId = this.option[i];
			if (galleryId != "myc") {
				option.push(galleryId);
			}
		}
	} else if (source == "sns") {
		if (this.hasOption("myc")) {
			option.push("myc");
		}
		for (var i=0, count=folderCheckingList.length ; i<count ; ++i) {
			var folderInfo = folderCheckingList[i];
			if (folderInfo.useYn) {
				option.push(folderInfo.id);
			}
		}
	}
	
	this.setOption(option);
};
GallerySegment.prototype.updateOptionList = function(dataInfo) {
	var option = [];
	
	for (var i=0, count=dataInfo.length ; i<count ; ++i) {
		option.push(dataInfo[i].id);
	}
	
	this.setOption(option);
};
GallerySegment.prototype.startEditMode = function() {
	var cloudHomeScreen = this.request,
		homeEventHandler = cloudHomeScreen.getEventHandler(),
		segmentManager = cloudHomeScreen.getSegmentManager(),
		homeId = this.homeId,
		sgmtId = this.sgmtId;
	
	jQuery(this.mainSelector + " .arrow_container").hide();
	
	if (chsConstants.isMobile) {
		var eventList = "taphold touchmove touchend touchcancel";
		jQuery(this.mainSelector + " .segment_cover").unbind(eventList).bind(eventList, function(event) {
			var condition = homeEventHandler.segmentDragHandler(event, this);
			
			if (condition) {
				segmentManager.startSegmentEditDetail(homeId, sgmtId, "gallery added photos");
			}
		});
	} else {
		jQuery(this.mainSelector + " .segment_cover").unbind("click").bind("click", function(event) {
			if (isMyEvent(event) && isLeftButtonClick(event)) {
				var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId),
					hash = "editDetail",
					actionParams = segmentManager.getPopupInfo("gallery added photos", { segmentObj : segmentObj });
				
				segmentObj.saveCurrentOption();
				cloudHomeScreen.setHash(hash, actionParams);
			}
		});
	}
};
GallerySegment.prototype.finishEditMode = function() {
	jQuery(this.mainSelector + " .arrow_container").show();
};
GallerySegment.prototype.setMovingAreaWidth = function() {
	var itemCount = jQuery(this.mainSelector + " .gallery .gallery_wrap").size(),
		areaWidth = 0;
	
	for (var i=0 ; i<itemCount ; ++i) {
		areaWidth += jQuery(this.mainSelector + " .gallery .gallery_wrap:eq(" + i + ")").outerWidth(true);
	}
	jQuery(this.mainSelector + " .gallery > *:first").css("width", areaWidth + "px");
};
GallerySegment.prototype.onRemoved = function() {
	var homeEventHandler = this.request.getEventHandler();
	
	homeEventHandler.removeLocalStorage("gallery_info");
};


/** MEDIAGUIDE SEGMENT */
var MediaGuideSegment = function(request) {
	this.request = request;
	this.initOption = ["music", "video", "ebook"];
	this.option = [];
	this.mediaInfo = {};
	this.initMediaInfo();
	this.setSegmentType("media");
};
MediaGuideSegment.prototype = new Segment();
MediaGuideSegment.prototype.initMediaInfo = function() {
	this.mediaInfo["music"] = [{
		id : "media_music_0000000000001",
		title : "aaliyah try again",
		image : "/aphone/images/chs/@img_media01.png",
		url : ""
	}, {
		id : "media_music_0000000000002",
		title : "shakira gitana gypsy",
		image : "/aphone/images/chs/@img_media02.png",
		url : ""
	}, {
		id : "media_music_0000000000003",
		title : "rihanna don't stop the music",
		image : "/aphone/images/chs/@img_media03.png",
		url : ""
	}];
	
	this.mediaInfo["video"] = [{
		id : "media_video_0000000000001",
		title : "HyunBin Secret Garden♥",
		image : "/aphone/images/chs/hyunbin.png",
		url : "http://www.youtube.com/embed/hQfp-8OwWak"
	}, {
		id : "media_video_0000000000002",
		title : "Pororo Opening",
		image : "/aphone/images/chs/pororo_video.png",
		url : "http://www.youtube.com/embed/reIYcIzPgWg"
	}, {
		id : "media_video_0000000000003",
		title : "Yuna",
		image : "/aphone/images/chs/yuna.png",
		url : "http://www.youtube.com/embed/SvjqCA-JK8M"
	}];
	
	this.mediaInfo["ebook"] = [{
		id : "media_ebook_0000000000001",
		title : "The wood-nymph, tr. by A.M. and A. Plesner",
		image : "/aphone/images/chs/@img_ebooks01.jpg",
		url : "http://books.google.co.kr/books?id=aMIBAAAAQAAJ&printsec=frontcover&ie=ISO-8859-1&source=gbs_api"
	}, {
		id : "media_ebook_0000000000002",
		title : "Wonderful Stories for Children",
		image : "/aphone/images/chs/@img_ebooks02.jpg",
		url : "http://books.google.co.kr/books?id=ey8EAAAAQAAJ&printsec=frontcover&ie=ISO-8859-1&source=gbs_api"
	}, {
		id : "media_ebook_0000000000003",
		title : "emma",
		image : "/aphone/images/chs/@img_ebooks03.jpg",
		url : "http://books.google.co.kr/books?id=Im4JAAAAQAAJ&printsec=frontcover#v=onepage&q&f=false"
	}];
};
MediaGuideSegment.prototype.load = function(homeId, sgmtId, option, loadType) {
	this.setProperties(homeId, sgmtId, option);
	if (typeof(this.option[0]) == "object") {
		this.setOption(this.getInitOption());
		this.request.getSegmentManager().setSegmentOption(homeId, sgmtId, this.option, true);
	}
	this.configMediaGuideSegment();
	this.getMedia(loadType);
};
MediaGuideSegment.prototype.configMediaGuideSegment = function() {
	var currentItemCount = jQuery(this.mainSelector + " .media .item").size(),
		count = this.option.length;
	
	if (currentItemCount > count) {
		jQuery(this.mainSelector + " .media .item:gt(" + (count - 1) + ")").remove();
	} else if (count > currentItemCount) {
		for (var i=0, appendCount=count-currentItemCount ; i<appendCount ; ++i) {
			jQuery(this.mainSelector + " .media > div:first").append("<li class=\"item\"></li>");
			for (var j=0 ; j<3 ; ++j) {
				jQuery(this.mainSelector + " .media > div:first .item:eq(" + i + ")").append(this.getItem());
			}
		}
	}
};
MediaGuideSegment.prototype.getItem = function() {
	var innerHTML = "<div class=\"col_media\">" +
						"<figure>" +
							"<img>" +
						"</figur>" +
						"<p class=\"title\"></p>" +
						"<div class=\"media_button\"></div>" +
						"<div class=\"item_cover\"></div>" +
					"</div>";
	
	return innerHTML;
};
MediaGuideSegment.prototype.getMedia = function(loadType) {
	if (navigator.onLine || true && (loadType != "cache")) {		// FIX_NAVI
		for (var i=0, count=this.option.length ; i<count ; ++i) {
			var type = this.option[i];
			if (type == "music") {
				this.getMusic();
			} else if (type == "video") {
				this.getVideo();
			} else if (type == "ebook") {
				this.getEbook();
			}
		}
	} else {
		var homeEventHandler = this.request.getEventHandler(),
			lsMediaMusicOption = homeEventHandler.getLocalStorage("media_music_option"),
			lsMediaVideoOption = homeEventHandler.getLocalStorage("media_video_option"),
			lsMediaEbookOption = homeEventHandler.getLocalStorage("media_ebook_option");
		if (nvl(lsMediaMusicOption) != "") {
			this.mediaInfo["music"] = JSON.parse(lsMediaMusicOption);
		}
		if (nvl(lsMediaVideoOption) != "") {
			this.mediaInfo["video"] = JSON.parse(lsMediaVideoOption);
		}
		if (nvl(lsMediaEbookOption) != "") {
			this.mediaInfo["ebook"] = JSON.parse(lsMediaEbookOption);
		}
		this.displayMusic();
		this.displayVideo();
		this.displayEbook();
	}
	
	this.setMovingAreaWidth();
	this.setIScroll();
};
MediaGuideSegment.prototype.getMusic = function() {
	var segmentObj = this,
		homeEventHandler = this.request.getEventHandler(),
		api = "http://api.7digital.com/1.2/track/chart",
		params = "imageSize=500&oauth_consumer_key=samsung";
	
	if (chsConstants.workerExist) {
		var data = {
			url : "/aphone/externalData",
			type : "POST",
			data : "api=" + encodeURIComponent(api) + "&params=" + encodeURIComponent(params) + "&method=GET"
		};
		homeEventHandler.executeWorker("getMusic", data, function(xhr) {
			if (xhr.status == 200) {
				var result = xhr.responseText;
				if (result && (result != "")) {
					var xml = getXmlDoc(result);
					segmentObj.parseMusicInfo(xml);
				}
			}
			
			segmentObj.displayMusic();
			if (navigator.onLine || true) {		// FIX_NAVI
				homeEventHandler.setLocalStorage("media_music_option", JSON.stringify(segmentObj.mediaInfo["music"]));
			}
		});
	} else {
		getExternalData({
			url : api,
			type : "GET",
			data : params,
			dataType : "xml",
			success : function(xml) {
				segmentObj.parseMusicInfo(xml);
			},
			error : function(error) {
				homeEventHandler.showAjaxError("MediaGuideSegment.getMusic()", error);
			},
			complete : function() {
				segmentObj.displayMusic();
				if (navigator.onLine || true) {		// FIX_NAVI
					homeEventHandler.setLocalStorage("media_music_option", JSON.stringify(segmentObj.mediaInfo["music"]));
				}
			}
		});
	}
};
MediaGuideSegment.prototype.parseMusicInfo = function(xml) {
	var root = xml.documentElement,
		chartItem = jQuery(root).children("chart").children("chartItem");

	// only 3 items...
	var musicList = [];
	for (var i=0 ; i<3 ; ++i) {
		var track = jQuery(chartItem[i]).children("track"),
			trackId = jQuery(track).attr("id"),
			url = "http://api.7digital.com/1.2/track/preview?trackid=" + trackId + "&oauth_consumer_key=samsung",
			title = jQuery(track).children("title").text(),
			image = jQuery(track).children("release").children("image").text();
		
		// change option!!
		var item = {
			id : "media_music_" + trackId,
			title : title,
			image : image,
			url : url
		};
		musicList.push(item);
	}
	this.mediaInfo["music"] = musicList;
};
MediaGuideSegment.prototype.displayMusic = function() {
	var cloudHomeScreen = this.request,
		homeEventHandler = cloudHomeScreen.getEventHandler(),
		segmentManager = cloudHomeScreen.getSegmentManager(),
		homeId = this.homeId,
		sgmtId = this.sgmtId,
		musicInfo = this.mediaInfo["music"],
		eventType = chsConstants.tapReplaceEvent;
	
	// to be changed..
	for (var i=0, count=musicInfo.length ; i<count ; ++i) {
		var option = musicInfo[i];
		jQuery(this.mainSelector + " .item:eq(0) .col_media:eq(" + i + ") .title").html(option.title);
		jQuery(this.mainSelector + " .item:eq(0) .col_media:eq(" + i + ") img").attr("src", option.image).load(function() {
			jQuery(this).fadeIn();
		});
		jQuery(this.mainSelector + " .item:eq(0) .col_media:eq(" + i + ") .media_button").addClass("button_music").unbind(eventType).bind(eventType, { source : option.url }, function(event) {
			if (isMyEvent(event) && isLeftButtonClick(event)) {
				var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId),
					source = event.data.source,
					segmentScrollInfo = homeEventHandler.segmentScroll[homeId + sgmtId + "Section"];
				
				if (segmentScrollInfo && !segmentScrollInfo.isMove) {
					homeEventHandler.onVideoPlayButtonClick(source);
				}
			}
		});
	}
};
MediaGuideSegment.prototype.getVideo = function() {
	var segmentObj = this,
		homeEventHandler = this.request.getEventHandler(),
		api = "https://gdata.youtube.com/feeds/api/standardfeeds/top_rated";
	
	getExternalData({
		url : api,
		type : "GET",
		data : "time=today",
		dataType : "xml",
		success : function(xml) {
			var root = xml.documentElement,
				entry = jQuery(root).children("entry"),
				videos = [];
			if (entry.length > 0) {
				for (var i=0, count=entry.length ; i<count ; ++i) {
					var title = jQuery(entry[i]).children("title").text(),
						url = jQuery(entry[i]).children("media\\:group").children("media\\:content").attr("url"),
						thumbnail = jQuery(entry[i]).children("media\\:group").children("media\\:thumbnail:first").attr("url");
					
					videos.push({ title : title, image : thumbnail, url : url });
					
					if (i == 2) {
						break;
					}
				}
				segmentObj.mediaInfo["video"] = videos;
			}
		},
		error : function(error) {
			homeEventHandler.showAjaxError("MediaGuideSegment.getVideo()", error);
		},
		complete : function() {
			segmentObj.displayVideo();
			if (navigator.onLine || true) {		// FIX_NAVI
				homeEventHandler.setLocalStorage("media_video_option", JSON.stringify(segmentObj.mediaInfo["video"]));
			}
		}
	});
};
MediaGuideSegment.prototype.displayVideo = function() {
	var cloudHomeScreen = this.request,
		homeEventHandler = cloudHomeScreen.getEventHandler(),
		segmentManager = cloudHomeScreen.getSegmentManager(),
		homeId = this.homeId,
		sgmtId = this.sgmtId,
		videoInfo = this.mediaInfo["video"],
		eventType = chsConstants.tapReplaceEvent;
	
	// to be changed..
	for (var i=0, count=videoInfo.length ; i<count ; ++i) {
		var video = videoInfo[i];
		jQuery(this.mainSelector + " .item:eq(1) .col_media:eq(" + i + ") .title").html(video.title);
		jQuery(this.mainSelector + " .item:eq(1) .col_media:eq(" + i + ") img").attr("src", video.image).load(function(event) {
			jQuery(this).fadeIn("fast");
		});
		jQuery(this.mainSelector + " .item:eq(1) .col_media:eq(" + i + ") .media_button").addClass("button_play").unbind(eventType).bind(eventType, { source : video.url }, function(event) {
			if (isMyEvent(event) && isLeftButtonClick(event)) {
				var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId),
					source = event.data.source,
					segmentScrollInfo = homeEventHandler.segmentScroll[homeId + sgmtId + "Section"];
				
				if (segmentScrollInfo && !segmentScrollInfo.isMove) {
					homeEventHandler.onVideoPlayButtonClick(source);
				}
			}
		});
	}
};
MediaGuideSegment.prototype.getEbook = function() {			
	var segmentObj = this;
	
	if (this.request.getAccountManager().tokenExist("google_books")) {
		var bookshelfList = [];
		this.request.getSnsManager().googlebooksManager.getBookshelves(function(result) {
			if (nvl(result) != "") {
				var resultObj = JSON.parse(result);
				var bookshelves = resultObj.items;
				for (var i=0, count=bookshelves.length ; i<count ; ++i) {
					if (bookshelves[i].volumeCount > 0) {
						bookshelfList.push(bookshelves[i].id);
					}
				}
			} else {
				// error message
			}
			
			segmentObj.getEbookFromBookshelf(bookshelfList);
		}, function(message) {
			var errorMessage = "[MediaGuideSegment.getEbook()] " + message;
			segmentObj.request.getEventHandler().showErrorMessage(errorMessage);
			segmentObj.displayEbook();
		});
	} else {
		this.displayEbook();
	}
};
MediaGuideSegment.prototype.getEbookFromBookshelf = function(bookshelfList, params) {
	var segmentObj = this,
		volumes = [],
		bookshelfCount = bookshelfList.length;
	if (bookshelfCount > 0) {
		var count = 0;
		for (var i=0 ; i<bookshelfCount ; ++i) {
			this.request.getSnsManager().googlebooksManager.getEbookFromBookshelf(bookshelfList[i], function(result) {
				if (nvl(result) != "") {
					var resultObj = JSON.parse(result);
					var bookList = resultObj.items;
					for (var j=0 ; j<bookList.length ; ++j) {
						var book = {
							id : "media_ebook_" + bookList[j].id,
							title : bookList[j].volumeInfo.title,
							image : bookList[j].volumeInfo.imageLinks.thumbnail,
							url : bookList[j].volumeInfo.previewLink
						};
						volumes.push(book);
					}
				} else {
					// error message
				}
				
				if (++count == bookshelfCount) {
					segmentObj.mediaInfo["ebook"] = volumes;
					segmentObj.displayEbook();
					if (navigator.onLine || true) {		// FIX_NAVI
						segmentObj.request.getEventHandler().setLocalStorage("media_ebook_option", JSON.stringify(this.option[2].value));
					}
				}
			});
		}
	} else {				
		this.displayEbook();
	}
};
MediaGuideSegment.prototype.displayEbook = function() {
	var cloudHomeScreen = this.request,
		homeEventHandler = cloudHomeScreen.getEventHandler(),
		segmentManager = cloudHomeScreen.getSegmentManager(),
		homeId = this.homeId,
		sgmtId = this.sgmtId,
		ebookInfo = this.mediaInfo["ebook"],
		eventType = chsConstants.tapReplaceEvent;
	
	for (var i=0, bookCount=ebookInfo.length ; (i<bookCount) && (i<3) ; ++i) {
		var ebook = ebookInfo[i];
		jQuery(this.mainSelector + " .item:eq(2) .col_media:eq(" + i + ") .title").html(ebook.title);
		jQuery(this.mainSelector + " .item:eq(2) .col_media:eq(" + i + ") img").attr("src", ebook.image).load(function(event) {
			jQuery(this).fadeIn("fast");
		});
		jQuery(this.mainSelector + " .item:eq(2) .col_media:eq(" + i + ") .media_button").addClass("button_book").unbind(eventType).bind(eventType, { url : ebook.url }, function(event) {
			if (isMyEvent(event) && isLeftButtonClick(event)) {
				var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId),
					url = event.data.url,
					segmentScrollInfo = homeEventHandler.segmentScroll[homeId + sgmtId + "Section"];
				
				if (segmentScrollInfo && !segmentScrollInfo.isMove) {
					homeEventHandler.openLink(url);
				}
			}
		});
	}
};
MediaGuideSegment.prototype.startEditMode = function() {
	this.setIScroll();
	
	// hide items except first one
	jQuery(this.mainSelector + " .media .item").each(function(i) {
		if (i != 0) {
			jQuery(this).hide();
		}
	});
	jQuery(this.mainSelector + " .media .arrow_container").hide();
	
	// Set Segment Drag & Scroll Handler
	if (chsConstants.isMobile) {
		var eventList = "taphold touchmove touchend touchcancel";
		jQuery(this.mainSelector + " .segment_cover").unbind(eventList).bind(eventList, { cloudHomeScreen : this.request }, function(event) {
			var cloudHomeScreen = event.data.cloudHomeScreen;
			cloudHomeScreen.getEventHandler().segmentDragHandler(event, this);
		});
	}
};
MediaGuideSegment.prototype.finishEditMode = function() {
	jQuery(this.mainSelector + " .media .item").show();
	jQuery(this.mainSelector + " .media .arrow_container").show();
	
	this.setMovingAreaWidth();
	this.setIScroll();
};
MediaGuideSegment.prototype.setMovingAreaWidth = function() {
	var itemCount = jQuery(this.mainSelector + " .media .item").size(),
		areaWidth = 0;
	
	for (var i=0 ; i<itemCount ; ++i) {
		areaWidth += jQuery(this.mainSelector + " .media .item:eq(" + i + ")").outerWidth(true);
	}
	jQuery(this.mainSelector + " .media > *:first").css("width", areaWidth + "px");
};
MediaGuideSegment.prototype.setIScroll = function() {
	try {
		var id = this.homeId + this.sgmtId + "Section";
		var options = { hScroll : true, vScroll : false, hScrollbar : true, vScrollbar : false, hideScrollbar : true, fadeScrollbar : true, desktopCompatibility : true, snap : "li", momentum : false, hidden : true };
		var buttons = {
				prev : "#" + this.homeId + this.sgmtId + "_slidePrev",
				next : "#" + this.homeId + this.sgmtId + "_slideNext"
		};

		var homeEventHandler = this.request.getEventHandler();
		if (homeEventHandler.hasIScroll(id) && (jQuery(this.mainSelector + " .item").size() > 0)) {
			homeEventHandler.refreshIScroll(id);
			homeEventHandler.scrollToPage(id, 0, 0, 0);
		} else {
			homeEventHandler.createIScroll(id, options, buttons);
		}
	} catch (e) {
		console.warn(e.message);
	}
};
MediaGuideSegment.prototype.onRemoved = function() {
	var homeEventHandler = this.request.getEventHandler();
	
	homeEventHandler.removeLocalStorage("media_music_option");
	homeEventHandler.removeLocalStorage("media_video_option");
	homeEventHandler.removeLocalStorage("media_ebook_option");
};


/**
 * @class
 * @returns
 */
var SocialDealSegment = function(request) {
	this.request = request;
	this.initOption = {};
	this.setSegmentType("socialDeals");
};
SocialDealSegment.prototype = new Segment();
SocialDealSegment.prototype.load = function(homeId, sgmtId, option) {
	this.setProperties(homeId, sgmtId, option);
	this.configSocialDealSegment();
	
	// to be changed.. (CloudPhone vs not)
	this.getSocialDeals();
};
SocialDealSegment.prototype.configSocialDealSegment = function() {
	var currentItemCount = jQuery(this.mainSelector + " .socialDeals .item").size(),
		count = 3;
	
	if (currentItemCount > count) {
		jQuery(this.mainSelector + " .socialDeals .item:gt(" + (count - 1) + ")").remove();
	} else if (count > currentItemCount) {
		for (var i=0, appendCount=count-currentItemCount ; i<appendCount ; ++i) {
			jQuery(this.mainSelector + " .socialDeals > div:first").append(this.getItem());
		}
	}
	
	this.request.getEventHandler().refreshScreenWidth(this.mainSelector);
};
SocialDealSegment.prototype.getItem = function() {
	var innerHTML = "<li class=\"item\">" +
						"<div class=\"screen\">" +
							"<figure>" +
								"<img>" +
							"</figure>" +
							"<div class=\"item_cover\"></div>" +
						"</div>" +
					"</li>";
	
	return innerHTML;
};
SocialDealSegment.prototype.getSocialDeals = function() {
	// to be changed..
	for (var i=0 ; i<3 ; ++i) {
		jQuery(this.mainSelector + " .item:eq(" + i + ") img").attr("src", "/aphone/images/chs/@img_socialDeals0" + (i+1) + ".png");
	}
	
	this.setMovingAreaWidth();
	this.setIScroll();
};
SocialDealSegment.prototype.startEditMode = function() {
	this.setIScroll();
	
	// hide items except first one
	jQuery(this.mainSelector + " .socialDeals .item").each(function(i) {
		if (i != 0) {
			jQuery(this).hide();
		}
	});
	
	// hide arrow container
	jQuery(this.mainSelector + " .socialDeals .arrow_container").hide();
	
	// bind event into segment_cover
	if (chsConstants.isMobile) {
		var eventList = "taphold touchmove touchend touchcancel";
		jQuery(this.mainSelector + " .segment_cover").unbind(eventList).bind(eventList, { cloudHomeScreen : this.request }, function(event) {
			var cloudHomeScreen = event.data.cloudHomeScreen;
//			var windowEvent = window.event;
//			cloudHomeScreen.getEventHandler().eventFiltering(event, windowEvent, this);
			cloudHomeScreen.getEventHandler().segmentDragHandler(event, this);
		});
	}
};
SocialDealSegment.prototype.finishEditMode = function() {
	// show all items
	jQuery(this.mainSelector + " .socialDeals .item").show();
	
	// hide arrow container
	jQuery(this.mainSelector + " .socialDeals .arrow_container").show();
	
	this.setMovingAreaWidth();
	this.setIScroll();
};
SocialDealSegment.prototype.setMovingAreaWidth = function() {
	var itemCount = jQuery(this.mainSelector + " .socialDeals .item").size();
	var areaWidth = 0;
	for (var i=0 ; i<itemCount ; ++i) {
		areaWidth += jQuery(this.mainSelector + " .socialDeals .item:eq(" + i + ")").outerWidth(true);
	}
	jQuery(this.mainSelector + " .socialDeals > *:first").css("width", areaWidth + "px");
};
SocialDealSegment.prototype.setIScroll = function() {
	try {
		var id = this.homeId + this.sgmtId + "Section";
		var options = { hScroll : true, vScroll : false, hScrollbar : true, vScrollbar : false, hideScrollbar : true, fadeScrollbar : true, desktopCompatibility : true, snap : "li", momentum : false, hidden : true };
		var buttons = {
				prev : "#" + this.homeId + this.sgmtId + "_slidePrev",
				next : "#" + this.homeId + this.sgmtId + "_slideNext"
		};

		var homeEventHandler = this.request.getEventHandler();
		if (homeEventHandler.hasIScroll(id) && (jQuery(this.mainSelector + " .item").size() > 0)) {
			homeEventHandler.refreshIScroll(id);
			homeEventHandler.scrollToPage(id, 0, 0, 0);
		} else {
			homeEventHandler.createIScroll(id, options, buttons);
		}
	} catch (e) {
		console.warn(e.message);
	}
};


/**
 * @class
 * @returns
 */
var WebclipSegment = function(request) {
	this.request = request;
	
	this.homeId = null;
	this.sgmtId = null;
	this.initOption = null;
	this.option = null;
	
	this.type = "webclip";
};

WebclipSegment.prototype = {
		/**
		 * @function
		 * @param homeId
		 */
		setHomeId : function(homeId) {
			this.homeId = homeId;
		},
		
		/**
		 * @function
		 * @param sgmtId
		 */
		setSegmentId : function(sgmtId) {
			this.sgmtId = sgmtId;
		},
		
		/**
		 * @function
		 * @param option
		 */
		setOption : function(option) {
			if ((option == null) || (option == undefined) || (option == "null") || (option == "undefined")) {
				this.option = this.initOption;
			} else {
				this.option = option;
			}
		},
		
		/**
		 * @function
		 * @returns
		 */
		getHomeId : function() {
			return this.homeId;
		},
		
		/**
		 * @function
		 * @returns
		 */
		getSegmentId : function() {
			return this.sgmtId;
		},
		
		/**
		 * @function
		 * @returns
		 */
		getOption : function() {
			return this.option;
		},
		
		/**
		 * @function
		 * @returns
		 */
		getInitOption : function() {
			return this.initOption;
		},
		
		/**
		 * @function
		 * @returns
		 */
		getSegmentType : function() {
			return this.type;
		},
		
		load : function(homeId, sgmtId, option, load) {
			this.setHomeId(homeId);
			this.setSegmentId(sgmtId);
			this.setOption(option);

			if (option) {
				this.mainSelector = this.configWebclipSegment();
			    
			    var src = jQuery("#webclip #" + sgmtId + " .webclip_ifrm").attr("src");
			    if ((homeId.indexOf("home") != -1) && (src != null) && (src != undefined) && (src != "")) {
			    	var clone = jQuery("#webclip #" + sgmtId + " .webclip_ifrm")[0].cloneNode(true);
			    	var replaced = jQuery("#" + homeId + " #" + homeId + sgmtId + " .webclip_ifrm")[0];
			    	
			    	jQuery(this.mainSelector + " .webclip > .screen")[0].replaceChild(clone, replaced);
			    } else if (option != null) {
			    	if (load) {
			    		var currentURL = jQuery(this.mainSelector + " .webclip_ifrm").attr("src");
			    		
			    		jQuery(this.mainSelector + " .webclip_ifrm").css("width", window.innerWidth + "px");
			    		if (currentURL != option.url) {
			    			jQuery(this.mainSelector + " .webclip_ifrm").attr("src", option.url);
			    		}
			    	}
			    }
			    
			    option.startX = parseInt(option.startX);
			    option.startY = parseInt(option.startY);
			    option.endX = parseInt(option.endX);
			    option.endY = parseInt(option.endY);
			    
			    if ((option.startX < 0) || (option.startX == "")) {
		    		option.startX = 1;
		    	}
		    	if ((option.startY < 0) || (option.startY == "")) {
		    		option.startY = 1;
		    	}
		    	if ((option.endY < 0) || (option.endY == "")) {
		    		option.endY = 210;
		    	}
		    	
		    	var webclip_widths = option.endX - option.startX;
		    	var webclip_heights = option.endY - option.startY;
			    if (webclip_heights <= 210) {
			    	webclip_heights = 210;
			    }
		    	
			    jQuery(this.mainSelector + " .webclip_ifrm").css({
	    			left : "-" + option.startX + "px",
	    			top : "-" + option.startY + "px"
	    		});
	    		jQuery(this.mainSelector + " .webclip").css("height", webclip_heights + "px");
	    		jQuery(this.mainSelector + " .webclip_ifrm").css("height", (option.startY + webclip_heights) + "px");
	    		
	    		// bind webclip link
	    		jQuery(this.mainSelector + " .item_cover").attr({ "href" : this.option.url, "target" : "_blank" }).css("cursor", "pointer");
			}
		},
		
		configWebclipSegment : function(selector) {
			var homeEventHandler = this.request.getEventHandler(),
				homeSelector = "#" + this.homeId + " #" + this.homeId + this.sgmtId,
				webclipSelector = "#webclip #" + this.sgmtId,
				selector = ((this.homeId == "webclip") ? webclipSelector : homeSelector);
			
		    if (this.homeId != "webclip") {
		    	if (jQuery(selector + " .webclip .webclip_ifrm").size() == 0) {
		    		var innerHTML = "<div class=\"screen\">" +
										"<iframe class=\"webclip_ifrm\" width=\"100%\" frameborder=\"0\" scrolling=\"no\" seamless=\"seamless\" src=\"\"></iframe>" +
										"<a class=\"item_cover\"></a>" +
									"</div>" +
									"<div class=\"icon-delete\"></div>";
		    		
					jQuery(selector + " .webclip").html(innerHTML);
		    	}
		    }
			homeEventHandler.refreshScreenWidth(selector);
			
			if (this.homeId != "webclip") {
				jQuery(selector + " .webclip .icon-delete").css("cursor", "pointer").unbind("click").bind("click", {
					segmentManager : this.request.getSegmentManager(),
					homeId : this.homeId,
					sgmtId : this.sgmtId
				}, homeEventHandler.onSegmentDeleted).hide();
			}
			
			return selector;
		},
		
		startEditMode : function() {
			if (chsConstants.isMobile) {
				var eventList = "taphold touchmove touchend touchcancel";
				jQuery(this.mainSelector + " .segment_cover").unbind(eventList).bind(eventList, { cloudHomeScreen : this.request }, function(event) {
					var cloudHomeScreen = event.data.cloudHomeScreen;
//					var windowEvent = window.event;
//					cloudHomeScreen.getEventHandler().eventFiltering(event, windowEvent, this);
					cloudHomeScreen.getEventHandler().segmentDragHandler(event, this);
				});
			}
		}
};


/**
 * @class
 * @param request
 * @returns
 */
var OrganizerSegment = function(request) {
	this.request = request;
	this.type = "organizer";
	this.initOption = {
			count : 5
	};
	this.option = {
			count : 5
	};
	this.eventList = [];
};

OrganizerSegment.prototype = {
		/**
		 * @function
		 * @param homeId
		 */
		setHomeId : function(homeId) {
			this.homeId = homeId;
		},
		
		/**
		 * @function
		 * @param sgmtId
		 */
		setSegmentId : function(sgmtId) {
			this.sgmtId = sgmtId;
		},
		
		/**
		 * @function
		 * @param option
		 */
		setOption : function(option) {
			if ((option == null) || (option == undefined) || (option == "null") || (option == "undefined")) {
				this.option = this.initOption;
			} else {
				this.option = option;
			}
		},
		
		/**
		 * @function
		 * @returns
		 */
		getHomeId : function() {
			return this.homeId;
		},
		
		/**
		 * @function
		 * @returns
		 */
		getSegmentId : function() {
			return this.sgmtId;
		},
		
		/**
		 * @function
		 * @returns
		 */
		getOption : function() {
			return this.option;
		},
		
		/**
		 * @function
		 * @returns
		 */
		getInitOption : function() {
			return this.initOption;
		},
		
		/**
		 * @function
		 * @returns
		 */
		getSegmentType : function() {
			return this.type;
		},
		
		load : function(homeId, sgmtId, option, loadType) {
			this.mainSelector = "#" + homeId + " #" + homeId + sgmtId;
			
			this.setHomeId(homeId);
			this.setSegmentId(sgmtId);
			this.setOption(option);
			
			this.getEventItemList(loadType);
		},
		
		configOrganizerSegment : function() {
			// init content container
			jQuery(this.mainSelector + " .organizer > div:eq(0)").html("");
			for (var i=0 ; i<this.option.count ; ++i) {
				jQuery(this.mainSelector + " .organizer > div:eq(0)").append(this.getItem());
			}
			this.request.getEventHandler().refreshScreenWidth(this.mainSelector);
		},
		
		getItem : function() {
			var innerHTML = "<li class=\"item\">" +
								"<div class=\"screen\">" +
									"<div class=\"ui-date\">" +
										"<p class=\"day\"></p>" +
										"<p class=\"week\"></p>" +
										"<p class=\"month\"></p>" +
										"<p class=\"year\"></p>" +
									"</div>" +
									"<div class=\"cont-text\">" +
										"<div class=\"schedule\">" +
											"<p class=\"heading\"></p>" +
											"<p class=\"detail\"></p>" +
											"<p class=\"daily_icon\"></p>" +
										"</div>" +	
										"<div class=\"photo\"></div>" +
									"</div>" +
									"<div class=\"item_cover\"></div>" +
								"</div>" +
							"</li>";
			
			return innerHTML;
		},
		
		getEventItemList : function(loadType) {
			var segmentObj = this;
			if (navigator.onLine || true && (loadType != "cache")) {		// FIX_NAVI
				jQuery.ajax({
					url : "/aphone/organizer/event/items",
					type : "GET",
					success : function(response) {
						segmentObj.getEventItemListCallback(response);
					},
					error : function(error) {
						console.error(error);
					}
				});
			} else {
				var lsEventList = this.request.getEventHandler().getLocalStorage("organizer_eventList");
				if (nvl(lsEventList) != "") {
					this.eventList = JSON.parse(lsEventList);
					this.option.count = this.eventList.length;
					
					this.configOrganizerSegment();
					this.displayEventItem();
					
					// set moving_area width and iscroll
					if (this.eventList.length > 0) {
						this.setMovingAreaWidth();
						this.setIScroll();
					} else {
						this.displayNoContent();
					}
				}
			}
		},
		
		getEventItemListCallback : function(response) {
			if (response.message.code == 0) {
				var eventList = response.result.event,
					list = [];
				for (var i=0, eventCount=eventList.length ; i<eventCount ; ++i) {
					var event = eventList[i];
					var item = {
						startTime : event.startDatetime,
						endTime : event.endDatetime,
						eventType : event.iconid,
						eventName : event.eventName,
						location : event.location,
						attendee : event.attendee
					};
					list.push(item);
				}
				
				this.eventList = list;
				this.option.count = this.eventList.length;
				
				this.configOrganizerSegment();
				this.displayEventItem();
				
				// set moving_area width and iscroll
				if (this.eventList.length > 0) {
					this.setMovingAreaWidth();
					this.setIScroll();
				} else {
					this.displayNoContent();
				}
			} else {
				
			}
		},
		
		displayEventItem : function() {
			var eventType = chsConstants.tapReplaceEvent;
			
			for (var i=0, eventCount=this.eventList.length ; i<eventCount ; ++i) {
				var item = this.eventList[i],
					startTime = (item.startTime ? new Date(item.startTime*1000) : new Date()),
					endTime = (item.endTime ? new Date(item.endTime*1000) : null),
					day = startTime.getFullYear() + fillText(startTime.getMonth()+1, 2, "0", "l") + fillText(startTime.getDate(), 2, "0", "l");
				
				// section background
				jQuery(this.mainSelector + " .organizer .item:eq(" + i + ") .cont-text").addClass("bg-" + item.eventType);
				
				// .ui-date
				jQuery(this.mainSelector + " .organizer .item:eq(" + i + ") .day").html(startTime.getDate());
				jQuery(this.mainSelector + " .organizer .item:eq(" + i + ") .week").html(getDayString(startTime.getDay()));
				jQuery(this.mainSelector + " .organizer .item:eq(" + i + ") .month").html(getMonthString(startTime.getMonth()));
				jQuery(this.mainSelector + " .organizer .item:eq(" + i + ") .year").html(startTime.getFullYear());
				
				// .cont-text
				jQuery(this.mainSelector + " .organizer .item:eq(" + i + ") .heading").html(item.eventName);
				var startHours = fillText(startTime.getHours(), 2, "0", "l"),
					startMinutes = fillText(startTime.getMinutes(), 2, "0", "l");
				jQuery(this.mainSelector + " .organizer .item:eq(" + i + ") .detail").html(startHours + ":" + startMinutes);
				if (endTime) {
					var endHours = fillText(endTime.getHours(), 2, "0", "l"),
						endMinutes = fillText(endTime.getMinutes(), 2, "0", "l");
					jQuery(this.mainSelector + " .organizer .item:eq(" + i + ") .detail").append("~" + endHours + ":" + endMinutes);
				}
				jQuery(this.mainSelector + " .organizer .item:eq(" + i + ") .detail").append(" | " + item.location);
				jQuery(this.mainSelector + " .organizer .item:eq(" + i + ") .daily_icon").addClass("icon-" + item.eventType);
				
				if (item.attendee.length > 0) {
					for (var j=0, attendeeCount=item.attendee.length ; j<attendeeCount ; ++j) {
						var picture = "data:image/png;base64," + item.attendee[j].picture;
						if ((item.attendee[j].picture == null) || (item.attendee[j].picture == undefined) || (item.attendee[j].picture == "")) {
							picture = getDefaultContactImage();
						}
						var figure = 	"<div class=\"figure\">" +
											"<img src=\"" + picture + "\">" +
											"<p class=\"name\">" + nvl(item.attendee[j].name) + "</p>" +
										"</div>";
						jQuery(this.mainSelector + " .organizer .item:eq(" + i + ") .photo").append(figure);
					}
				}
				
				jQuery(this.mainSelector + " .organizer .item:eq(" + i + ") .item_cover").css("cursor", "pointer").unbind(eventType).bind(eventType, { day : day }, function(event) {
					if (isMyEvent(event) && isLeftButtonClick(event)) {
						var segmentObj = segmentManager.getSegmentObject(homeId, sgmtId),
							day = event.data.day,
							url = location.origin + "/organizer/index.html?day=" + day,
							segmentScrollInfo = homeEventHandler.segmentScroll[homeId + sgmtId + "Section"];
						
						if (segmentScrollInfo && !segmentScrollInfo.isMove) {
							homeEventHandler.openLink(url);
						}
					}
				});
			}
			
			if (navigator.onLine || true) {		// FIX_NAVI
				this.request.getEventHandler().setLocalStorage("organizer_eventList", JSON.stringify(this.eventList));
			}
		},
		
		displayNoContent : function() {
			var innerHTML = "<li class=\"item\">" +
								"<div class=\"screen\">" +
									"<div class=\"message\">There is No Event.</div>" +
								"</div>" +
							"</li>";
			jQuery(this.mainSelector + " .organizer > div:eq(0)").html(innerHTML);
			this.request.getEventHandler().refreshScreenWidth(this.mainSelector);
			
			this.setMovingAreaWidth();
			jQuery(this.mainSelector + " .organizer .arrow_container").hide();
		},
		
		/**
		 * 
		 */
		startEditMode : function() {
			if (this.eventList.length > 0) {
				this.setIScroll();
			}
			
			// hide items except first one
			jQuery(this.mainSelector + " .organizer .item").each(function(i) {
				if (i != 0) {
					jQuery(this).hide();
				}
			});
			
			// hide arrow container
			jQuery(this.mainSelector + " .organizer .arrow_container").hide();
			
			// Set Segment Drag & Scroll Handler
			var segmentObj = this;
			if (chsConstants.isMobile) {
				var eventList = "taphold touchmove touchend touchcancel";
				jQuery(this.mainSelector + " .segment_cover").unbind(eventList).bind(eventList, { cloudHomeScreen : this.request }, function(event) {
					var cloudHomeScreen = event.data.cloudHomeScreen;
//					var windowEvent = window.event;
//					cloudHomeScreen.getEventHandler().eventFiltering(event, windowEvent, this);
					cloudHomeScreen.getEventHandler().segmentDragHandler(event, this);
				});
			}
		},
		
		/**
		 * 
		 */
		finishEditMode : function() {
			// show all items
			jQuery(this.mainSelector + " .organizer .item").show();
			
			// hide arrow container
			jQuery(this.mainSelector + " .organizer .arrow_container").show();
			
			this.setMovingAreaWidth();
			this.setIScroll();
		},
		
		/**
		 * 
		 */
		setMovingAreaWidth : function() {
			var itemCount = jQuery(this.mainSelector + " .organizer .item").size();
			var areaWidth = 0;
			for (var i=0 ; i<itemCount ; ++i) {
				areaWidth += jQuery(this.mainSelector + " .organizer .item:eq(" + i + ")").outerWidth(true);
			}
			jQuery(this.mainSelector + " .organizer > *:first").css("width", areaWidth + "px");
		},
		
		/**
		 * 
		 */
		setIScroll : function() {
			try {
				var id = this.homeId + this.sgmtId + "Section";
				var options = { hScroll : true, vScroll : false, hScrollbar : true, vScrollbar : false, hideScrollbar : true, fadeScrollbar : true, desktopCompatibility : true, snap : "li", momentum : false, hidden : true };
				var buttons = {
						prev : "#" + this.homeId + this.sgmtId + "_slidePrev",
						next : "#" + this.homeId + this.sgmtId + "_slideNext"
				};

				var homeEventHandler = this.request.getEventHandler();
				if (homeEventHandler.hasIScroll(id) && (jQuery(this.mainSelector + " .item").size() > 0)) {
					homeEventHandler.refreshIScroll(id);
					homeEventHandler.scrollToPage(id, 0, 0, 0);
				} else {
					homeEventHandler.createIScroll(id, options, buttons);
				}
			} catch (e) {
				console.warn(e.message);
			}
		},
		
		onRemoved : function() {
			var homeEventHandler = this.request.getEventHandler();
			
			homeEventHandler.removeLocalStorage("organizer_eventList");
		}
};


/**
 * 
 * @param request
 * @returns
 */
var SamsungAdSegment = function(request) {
	this.request = request;
	this.initOption = {};
	this.setSegmentType("samsungAd");
};

SamsungAdSegment.prototype = new Segment();
SamsungAdSegment.prototype.load = function(homeId, sgmtId, option) {
	this.mainSelector = "#" + homeId + " #" + homeId + sgmtId;
	this.setProperties(homeId, sgmtId, option);
	this.configSamsungAdSegment();
	this.getAdvertisement();
};
SamsungAdSegment.prototype.configSamsungAdSegment = function() {
	// init content container
	jQuery(this.mainSelector + " .samsungAd > div:eq(0)").html(this.getItem());
	this.request.getEventHandler().refreshScreenWidth(this.mainSelector);
	
	jQuery(this.mainSelector + " .arrow_container").hide();
};
SamsungAdSegment.prototype.getItem = function() {
	return	"<div class=\"screen\">" +
				"<iframe allowtransparency=\"true\" frameborder=\"0\" scrolling=\"no\" seamless=\"seamless\" src=\"\"></iframe>" +
			"</div>";
};
SamsungAdSegment.prototype.getAdvertisement = function() {
	var adhubConf = {
		id : '2011005921_001',
		width : jQuery(this.mainSelector + " .samsungAd iframe").outerWidth(true),
		height : jQuery(this.mainSelector + " .samsungAd iframe").outerHeight(true),
		allow : location.origin,
		bgColor : '000000',
		fontColor : 'FFFFFF',
		fontSize : 12,
		retry : 5,
		host : 'http://10.254.195.193',
		uri : '/api/web/0.1/'
	};
	
	var src = "http://10.254.195.193/api/web/0.1/viewAd.html?";
	for (var param in adhubConf) {
		if (adhubConf.hasOwnProperty(param)) {
			src += param + "=" + adhubConf[param] + "&";
		}
	}
	src += "dummy=" + (new Date()).getTime();
	
	src = "http://cloudphone.dyndns.org/SamsungAD/ad.html";
	jQuery(this.mainSelector + " .samsungAd iframe").attr("src", src);
};
SamsungAdSegment.prototype.startEditMode = function() {
	jQuery(this.mainSelector + " .arrow_container").hide();
	
	var segmentObj = this;
	if (chsConstants.isMobile) {
		var eventList = "taphold touchmove touchend touchcancel";
		jQuery(this.mainSelector + " .segment_cover").unbind(eventList).bind(eventList, function(event) {
			segmentObj.request.getEventHandler().segmentDragHandler(event, this);
		});
	}
};


/**
 * @class
 * @returns
 */
var UserDefinedSegment = function(request) {
	this.request = request;
	this.setSegmentType("userDefined");
};

UserDefinedSegment.prototype = new Segment();
UserDefinedSegment.prototype.load = function(homeId, sgmtId, option) {
	this.mainSelector = "#" + homeId + " #" + homeId + sgmtId;
	this.setProperties(homeId, sgmtId, option);
};